MapboxGL を使って Vue プロジェクトで 3D マップをゼロから開発するチュートリアル (6) ポイント、ライン、サーフェス レイヤーと 3D サーフェス レイヤー (白モデル) の読み込み

1. ポイントレイヤーをロードする

地図アプリケーションを開発する場合、POIなどのポイントデータを読み込み、テキストやアイコンの情報を表示します。mapbox-glはシンボルレイヤー(シンボル)に相当します。以下のコードは、Mapbox GL JSのデフォルトのMarkerメソッドを使用して、地図のマーク。

          // Create a default Marker and add it to the map.
          const marker1 = new this.$mapboxgl.Marker()
            .setLngLat([116.03238901390978, 38.913188059745586])
            .addTo(map);

          // Create a default Marker, colored black, rotated 45 degrees.
          const marker2 = new this.$mapboxgl.Marker({
    
    
              color: 'black',
              rotation: 45
            })
            .setLngLat([116.03238901390978, 38.913188059745586])
            .addTo(map);

マーカー 1 の中心座標は 116.03238901390978、38.913188059745586 です。デフォルトのマーカーの色が使用されます。
marker2 はオプションを使用して、新しい Marker オブジェクトの色と回転パラメータを定義します。

2. ラインレイヤーとエリアレイヤーをロードする

GeoJSON データ ソースを使用してマップにポリゴンを追加します。

まず、addSource を使用して、ポリゴンを含む GeoJSON データを追加します。次に、addLayer を使用して新しいレイヤーを作成し、ポリゴンの外観をスタイル設定します。ポリゴンの周囲にアウトラインを追加するには、addLayer を再度使用して、同じ GeoJSON ソースを参照する新しいライン レイヤーを作成します。

コード例:

          const chinaboundary = require('../assets/chinajson.json');
          console.log(chinaboundary)
          const chinaboundarysource = {
    
    
            type: 'geojson',
            data: {
    
    
              type: 'FeatureCollection',
              features: chinaboundary.features
            }
          }
          map.addLayer({
    
    
            id: 'chinaboundaryline',
            type: 'line',
            source: chinaboundarysource,
            paint: {
    
    
              'line-color': 'yellow',
              'line-opacity': 0.75,
              'line-width': 5
            }
          });
          map.addLayer({
    
    
            id: 'chinaboundarypolghon',
            type: 'fill',
            source: chinaboundarysource, // reference the data source
            layout: {
    
    },
            paint: {
    
    
              'fill-color': '#0080ff', // blue color fill
              'fill-opacity': 0.5
            }
          });

ここに画像の説明を挿入

3. 3D サーフェス レイヤー (白いモデル) を読み込みます

実現した機能:高さ情報付き表面データを読み込み、簡易建物(白モデル)効果を表示

3D サーフェス レイヤーは、mapbox-gl の塗りつぶし押し出しレイヤーに対応します。

Mapbox-gl で塗りつぶし押し出しレイヤーを読み込むプロセス: geojson ベクター データを読み込むことで、データ ソースが読み込まれた後、レイヤーを設定します。
geojson データを例として取り上げます。

 //添加geojson数据源,数据中必须有高度的字符,并且是数字类型的
          map.addSource('buildingdata', {
    
    
            'type': 'geojson',
            'data': {
    
    
              'type': 'Feature',
              'geometry': {
    
    
                'type': 'Polygon',
                "properties": {
    
    
                  "height": 20000
                },
                'coordinates': [
                  [
                    [115.720119, 39.685438],
                    [116.155905, 39.724518],
                    [116.275488, 39.548482],
                    [115.548794, 39.372887],
                    [115.720119, 39.685438],
                  ]
                ]
              }
            }
          });
          //添加三维建筑图层,id对应以上
          map.addLayer({
    
    
            'id': 'buildingdata',
            'type': 'fill-extrusion',
            'source': 'buildingdata',
            'paint': {
    
    
              // 设置填充颜色
              'fill-extrusion-color': '#fff000',
              //从属性中获得高度,这里用的是height字段
              'fill-extrusion-height': ['get', 'height'],
              // 透明度设置
              'fill-extrusion-opacity': 0.8
            }
          });

効果:

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_43025151/article/details/131256422