vue中展示mapbox地图

1,vue中安装mapbox

cnpm i mapbox-gl -S

2,main.js中引入

import mapBoxGl from 'mapbox-gl'
Vue.prototype.$mapboxgl = mapBoxGl

3.展示地图

<!-- mapbox -->
<template>
  <div id="map"></div>
</template>

<script>
export default {
  data() {
    return {};
  },
  components: {},
  created() {},
  mounted() {
    this.initmap();
  },
  computed: {},
  methods: {
    initmap() {
      this.$mapboxgl.accessToken =
        "pk.eyJ1IjoibGlqaWFuZ2ppYW5namlhbmciLCJhIjoiY2s2b2czbmltMG14cDNkbXpldjhkd3c3ZiJ9.zBaMzJo2X2UVPyFTtd5hEQ";
      var map = new this.$mapboxgl.Map({
        container: "map",
        style: "mapbox://styles/mapbox/streets-v11",
        center: [104.07, 30.67],
        zoom: 5,
        // pitch: 60, //视野倾斜,0-60
        // bearing: -17.6,//视野旋转角度
      });

      //注册点击事件
      map.on("click", function(e) {
        console.log("点击");
      });
    }
  }
};
</script>

<style lang="scss">
#map {
  height: 500px;
  // border: 1px solid red;
}
</style>

4,效果展示

5,地图飞至某一位置(flyTo())

注意:“load”后面的回调函数必须使用箭头函数形式,不能用function()

map.on('load',()=>{
		  map.flyTo({
          center: [104.07, 30.67],
          zoom: 5,
          speed: 0.2,
          curve: 2,
          
        })
	  })

6,切换图层(osm和卫星图)

html

<el-radio-group v-model="currentMap" size="small" @change="handleSelect">
		<el-radio-button label="streets-v11">街道图</el-radio-button>
		<el-radio-button label="satellite-v9">卫星图</el-radio-button>
</el-radio-group>

js

data() {
    return {
		 currentMap: 'streets-v11'
    };
  },
methods: {
    handleSelect(item){
		map.setStyle('mapbox://styles/mapbox/' +item )
	}
}

效果展示:

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值