方法一 :使用第三方工具
vue-baidu-map
安裝命令:
yarn add vue-baidu-map --save
文檔地址:https://dafrok.github.io/vue-baidu-map/#/zh/start/usage
案例01:https://blog.csdn.net/playboyanta123/article/details/86514891
案例02:https://www.cnblogs.com/wangqi2019/p/11040239.html
為了頁面流暢,建議還是局部引用(覺得這三個滿足一般的需求了),如下:
import { BaiduMap, BmScale, BmGeolocation } from 'vue-baidu-map'
然后注入依賴:
components: {
BaiduMap,
BmGeolocation,
BmScale
},
HTML代碼,在需要引入百度地圖的地方加入下面代碼
<!--接入百度地圖-->
<baidu-map style=" height: 600px;" :center="map_center" :zoom="my_zoom"
:scroll-wheel-zoom="my_scroll_wheel_zoom"
class="baidu-map-view"
@ready="map_handler" ak="分配給你的百度key">
</baidu-map>
如果沒有百度地圖key就去申請一個,申請網址:http://lbsyun.baidu.com/index.php?title=jspopular/guide/getkey
如果需要對地圖進行事件處理,必須要在ready事件之后,否者取不到BMap對象!
ready 是在地圖組件渲染完畢時觸發,返回一個百度地圖的核心類和地圖實例——{BMap, map}。百度地圖組件是異步加載,不要在組件的生命周期中訪問 BMap 核心類和 map 實例,如有需要,請在所需組件的 ready 事件回調函數的參數中獲取。
看代碼:
// 地圖初始化回調
map_handler({ BMap, map }) {
this.BMap = BMap
this.map = map
},
其中,BMap是百度地圖的對象,直接new出來跟原始的百度地圖API一樣使用,map是地圖對象,可以調用對應的地圖方法,比如添加坐標點等。
獲取到地圖的BMap和map之后,剩下的操作就可以直接參照百度地圖官方api接口了,對,就是這樣子。
百度地圖官方api demo:http://lbsyun.baidu.com/jsdemo.htm#canvaslayer
小案例(給地圖設置點擊獲取經緯度坐標並標點):
this.map.addEventListener('click', (e) => {
const point = new this.BMap.Point(e.point.lng, e.point.lat)
const marker = new this.BMap.Marker(point) // 設置點擊位置
map.clearOverlays() // 清空地圖上其他紅色位置標識
map.addOverlay(marker) // 添加指定點
})
希望對你有用!
方法二:引入百度地圖JS
在 index.html 添加百度地圖的 script
<script src="http://api.map.baidu.com/api?v=3.0&ak=你的百度地圖秘鑰(ak)&callback=bMapInit"></script>
webpack.base.conf.js添加externals配置,內容如下,與entry平級:
entry: {
app: ['babel-polyfill', './src/main.js']
},
externals: {
'BMap': 'BMap'
},
在調用百度地圖的組件中引用:
import BMap from 'BMap'
在需要接入地圖的界面引入地圖
<div id="map-core"></div>
然后就可以寫方法進行邏輯操作
this.map = new BMap.Map('map-core')
this.map.centerAndZoom(new BMap.Point(113.275, 23.117), 10)
然后就可以根據百度地圖官方api進行邏輯編寫。
希望對你有用!