mapbox - vue项目加载mapbox

2,341 阅读1分钟

这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战

申请key

去mapbox的官网注册账号,然后通过下图创建属于自己的key,然后通过key来加载地图 。

image.png

使用npm引入mapbox-gl的依赖

npm install --save mapbox-gl

组件中的配置

先在布局中创建一个div,充当地图存放的容器,通过id来进行初始化绑定。

<div id="mapbox" class="map"></div>

同时在css中给这个div样式

  .map{
    width: 100%;
    height: 100%;
    position: absolute;
  }

在js中引入mapboxgl的对象

 import mapboxgl from 'mapbox-gl'

初始化地图

定义地图的初始化函数

 methods: {
    init(){
        mapboxgl.accessToken = this.key; //这里请换成自己的token
        var map = new mapboxgl.Map({
          container: 'mapbox', // container id 绑定的组件的id
          style: 'mapbox://styles/mapbox/streets-v11', //地图样式,可以使用官网预定义的样式,也可以自定义
          center: [120.2,30.1666], // 初始地图中心点位置
          zoom: 15,     // starting zoom 地图初始的层级
          pitch: 60,  //地图的角度,不写默认是0,取值是0-60度,一般在3D中使用
          bearing: -17.6, //地图的初始方向,值是北的逆时针度数,默认是0,即是正北
          antialias: true, //抗锯齿,通过false关闭提升性能
        });  
    }
}

在挂载完成时调用

mounted() {
  this.init()
},

就这样就可以将mapbox-gl于vue项目中成功的渲染出来了。

效果如下:

mapboxgl vue.gif

不同的地图风格展示:

夜间导航风格

style:'mapbox://styles/mapbox/navigation-guidance-night-v2'

image.png

白天导航风格

style:'navigation-guidance-day-v2'

image.png

卫星影像图

style:'mapbox://styles/mapbox/satellite-v9'

image.png

最后

mapbox-gl的地图风格支持自定义,这部分有些复杂,在下一章中在介绍如何配置不同的风格。