mapBox使用笔记

mapBox使用笔记,第1张

项目需要,以mapBox为基础开发地图相关大屏展示,记录开发与学习。
基础的地图渲染熟悉一些以后还是比较容易的,就是刚开始不熟一脸懵,先附上文档地址
英文地址:https://www.mapbox.com/maps/
中文文档:http://www.mapbox.cn/ 中文文档里里还是会有很多英文 只是简单的介绍为中文了
简单样例:
效果展示

 


// js部分
import mapboxGL from 'mapbox-gl'
import 'mapbox-gl/dist/mapbox-gl.css'

data() {
  return {
    mapStyle: {
      version: 8,
      glyphs: 'url', // 天地图或mapbox  .pdf文件
      sources: {
        'raster-base-tiles': {
          type: 'raster',
          tiles: ['url'], // 此为城市底图
          tileSize: 256,
          zoomOffset: -1
        },
        'raster-tiles': {
          type: 'raster',
          tiles: [
            'http://t0.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=你的秘钥'
          ],
          tileSize: 256,
          zoomOffset: -1
        },
        'raster-label-tiles': {
          type: 'raster',
          tiles: ['url'], // 此为城市标注
          tileSize: 256,
          zoomOffset: -1
        }
      },
      layers: [{
          id: 'tdt-base-tiles',
          type: 'raster',
          source: 'raster-base-tiles',
          minzoom: 0,
          maxzoom: 22
        },
        {
          id: 'tdt-img-tiles',
          type: 'raster',
          source: 'raster-tiles',
          minzoom: 0,
          maxzoom: 22
        },
        {
          id: 'tdt-label-tiles',
          type: 'raster',
          source: 'raster-label-tiles',
          minzoom: 0,
          maxzoom: 22
        }
      ]
    }
  }
}

methods: {
  initMap() {
    var hoveredStateId = null
    let self = this
    // 初始化地图
    mapboxGL.accessToken =
      '你的秘钥'
    self.map = new mapboxGL.Map({
      style: self.mapStyle,
      center: {
        lng: 107.6,
        lat: 34.655
      },
      zoom: 5.8,
      pitch: 15,
      minZoom: 5,
      maxZoom: 17,
      container: self.mapID
      // pitchWithRotate: false // 将不会在"拖拽进行地图旋转"的同时控制地图的倾斜。
    })
    // 加载指北针图表
    // self.map.addControl(new mapboxGL.NavigationControl());
    // 加载地图比例尺
    self.map.addControl(
      new mapboxGL.ScaleControl({
        maxWidth: 80,
        unit: 'metric'
      }),
      'bottom-left'
    )
    self.map.on('click', function (e) {})
    self.map.on('load', function () {
      self.map.addSource('states', {
        type: 'geojson',
        data: self.baseUrl + '/static/json/610000_full.geojson'
      })
      // 覆盖的高亮显示
      self.map.addLayer({
        id: 'state-fills',
        type: 'fill',
        source: 'states',
        layout: {},
        paint: {
          'fill-color': 'rgba(135, 250, 254, 0.3)',
          'fill-opacity': [
            'case',
            ['boolean', ['feature-state', 'hover'], false],
            1,
            0.5
          ]
        }
      })
       // 覆盖的高亮描边
      self.map.addLayer({
        id: 'state-lines',
        type: 'line',
        source: 'states',
        layout: {},
        paint: {
          'line-color': 'rgba(135, 250, 254, 1)',
          'line-width': 2
        }
      })
    })
    // 地图初始化完成后,调用父组件的回调方法
    self.$emit('onMapLoaded', self.map)
  }
}

简单的示例就完成了。其中addSource里的data属性值geojson为阿里云获取
阿里云geojson获取地址DataV.GeoAtlas地理小工具系列
另echarts geojson获取地址 
echarts-china-cities-js/geojson/shape-only at master · echarts-maps/echarts-china-cities-js · GitHub

从echarts资源列表里也可以查到

https://github.com/ecomfe/awesome-echarts

点击地图高亮展示也是类似的 *** 作
1. 捕获地图点击事件
2. 通过地图坐标获取相应市或区县 geoJson文件
3. 调用地图addSource方法加载图层,paint属性内配置相应线或面的颜色。
 

mapbox属性内配置项文档在style分类里地址为
http://www.mapbox.cn/mapbox-gl-js/style-spec/

后续更新地图上标记地点

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/940105.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-17
下一篇2022-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存