很多时候,我们在使用地图的时候,用的并不是mapbox提供的底图,而是我们自己的数据。

这里以Geojson(json)数据为例。

STEP 1 (数据定义)

将自己的数据加载,同时赋予名称。

import CHINAMAP from '@/assets/mapdata/china.json'

STEP 2 (创建空地图容器)

既然是使用mapbox,那么首先需要创建一个地图容器,但是由于我们不使用mapbox底图,因此,与普通创建mapbox地图的区别在于style,这一参数的定义。

(其余配置参考系列文章一

var map = new this.$mapboxgl.Map({
        container: "map",
        style: {
          version: 8,
          sources: {},
          layers: [
            {
              id: "background",
              type: "background",
              layout: {},
              paint: {
                "background-color": [
                  "interpolate",
                  ["linear"],
                  ["zoom"],
                  5,
                  "hsl(38, 43%, 89%)",
                  7,
                  "hsl(38, 48%, 86%)",
                ],
              },
            },
          ],
        },
        zoom: 5,
        center: [109, 38],
      });

STEP 3 (加载数据)

mapbox中加载资源所使用,map.on(){'load',}函数。

首先加载资源,再加载图层,即可。

map.on('load',function(){
        map.addSource('states', {
            'type': 'geojson',
            'data': CHINAMAP
        });
        map.addLayer({
            'id': 'china_map',
            'type': 'fill',
            'source': 'states',
            'paint': {
                'fill-color':'#0080ff',
                'fill-outline-color': '#4f4f4f',
                'fill-opacity':[
                    'case',
                    ['boolean', ['feature-state', 'hover'], false],
                    1,
                    0.8
                    ]
            }
        });
      })

结果展示:

 

Logo

前往低代码交流专区

更多推荐