Vue调用百度地图组件及常见问题解决

项目场景:

Vue调用百度地图组件及常见问题解决


获取百度地图ak

地址:http://lbsyun.baidu.com/apiconsole/key
1、注册。填入姓名、手机号、验证码、邮箱点击提交。
2、打开邮箱,激活。
3、创建一个应用,填入应用名称,根据需要选取需要的服务。
选择服务器端,IP白名单如果不对IP有限制,可写0.0.0.0/0;选择浏览器端,不限制IP可写*

通过vue地图组件

1、安装
npm install vue-baidu-map --save
2、全局注册
全局注册

全局注册将一次性引入百度地图组件库的所有组件

import Vue from 'vue'
import BaiduMap from 'vue-baidu-map'

Vue.use(BaiduMap, {
//此处ak为在百度地图开发者平台申请到的密钥
  ak: ''
})
局部注册

如有按需引入组件需求,可选择局部注册百度地图组件,可减少工程打包后的容量。注:局部注册的BaiduMap组件必须声明ak属性。所有独立组件均存放在node_modules/vue-baidu-map/components文件夹下,按需引入即可。

<template>
  <baidu-map class="bm-view" ak="YOUR_APP_KEY">
  </baidu-map>
</template>


<script>
import BaiduMap from 'vue-baidu-map/components/map/Map.vue'
export default {
  components: {
    BaiduMap
  }
}
</script>


<style>
//必须给baidu-map组件定义宽高,
//因为BaiduMap 组件容器本身是一个空的块级元素,如果容器不定义高度,
//百度地图将渲染在一个高度为 0 不可见的容器内。
.bm-view {
  width: 100%;
  height: 100%;
}
</style>
全局注册完成引入

全局注册完成后页面引入

<template>
<-- scroll-wheel-zoom属性为是否允许鼠标滚轮缩放地图 -->
 <baidu-map
     :center="center"
     :zoom="zoom"
     @ready="initMap"
     :scroll-wheel-zoom="true"
      class="map"
      >
 </baidu-map>    
</template>

<script>
export default {

data(){
	return{
	center: {
        lng: 0,//经度
        lat: 0 // 纬度
      }, 
     zoom: 10, // 地图等级
	}
}methods:{
	// 地图初始化方法
    initMap ({ BMap, map }) {
      this.center.lng = 116.800521
      this.center.lat = 33.962713
      this.zoom = 13
    },
}


}
</script>

<style>

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

</style>

由于百度地图 JS API 只有 JSONP 一种加载方式,因此 BaiduMap 组件及其所有子组件的渲染只能是异步的。因此,请使用在组件的 ready 事件来执行地图 API 加载完毕后才能执行的代码,不要试图在 vue 自身的生命周期中调用 BMap 类。

自定义地图样式

百度地图官方是可以支持自定义地图样式

第一步、发布百度地图样式

打开百度地图开发者平台,进入右上角控制台,选择左侧列表特色服务平台,点击个性化地图
进入个性化地图后,点击右上角新建,可选择样式模板,也可自行配色。
地图样式制作完成后点击可选择预览与发布。
在这里插入图片描述
发布完成后就可获得样式id,同时在我的地图样式中,也可以看到刚刚发布的地图
在这里插入图片描述

第二步,在initMap方法中通过setMapStyleV2传入样式id即可

initMap ({ BMap, map }) {
      map.setMapStyleV2({
        styleID: styleID
      })
      this.center.lng = 116.800521
      this.center.lat = 33.962713
      this.zoom = 13
    },

也可以通过下载样式json文件更改样式

initMap ({ BMap, map }) {
      const testJson = require('./config/custom_map_config.json')
      map.setMapStyleV2({
        styleJson: testJson
      })
      this.center.lng = 116.800521
      this.center.lat = 33.962713
      this.zoom = 13
    },

以上即为vue引用百度地图组件方式,后续会更新地图标点等后续功能,感谢浏览!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值