vue整合百度地圖顯示指定地點(diǎn)信息
先看看效果圖

一、安裝相關(guān)依賴
npm i --save vue-baidu-map
二、在main.js中引用
import BaiduMap from "vue-baidu-map"
Vue.use(BaiduMap,{
? ak: '你的密鑰(百度地圖開放API官網(wǎng)可免費(fèi)申請)'
})三、創(chuàng)建地圖工具 map.js
export function MP(ak) { ?
? ? return new Promise(function (resolve, reject) { ?
? ? ? window.init = function () { ?
? ? ? ? resolve(BMap) ?
? ? ? } ?
? ? ? var script = document.createElement("script"); ?
? ? ? script.type = "text/javascript"; ?
? ? ? script.src = "http://api.map.baidu.com/api?v=2.0&ak="+"你的密鑰"+"&callback=init"; ?
? ? ? script.onerror = reject; ?
? ? ? document.head.appendChild(script); ?
? ? }) ?
? } ?在需要用到地圖的文件引入該工具
import { MP } from "@/utils/map.js";四、繪制地圖
1、創(chuàng)建一個(gè)容器展示地圖,給容器指定一個(gè)id,根據(jù)頁面的具體需求指定容器的寬和高
<div class="map">
<div id="container" style="height: 300px; width: 100%" ref="allmap"></div>
</div>2、在data中定義需要用到的數(shù)據(jù)
data() {
return {
dialogMap: false,
mapPointName: "",
mapGetshow: true
}
}3、定義全局的map地圖對象和geocoder地理編碼對象
var map; let geoc = null;
4、創(chuàng)建一個(gè)定位地點(diǎn)的方法,添加要展示的地點(diǎn)的名稱,此處也可動態(tài)指定
mapNameChange() {
let that = this,
point,
marker = null;
let local = new BMap.LocalSearch(map, {
renderOptions: { map: map },
onSearchComplete: (res) => {
if (local.getResults() != undefined) {
map.clearOverlays(); //清除地圖上所有覆蓋物
if (local.getResults().getPoi(0)) {
point = local.getResults().getPoi(0).point; //獲取第一個(gè)智能搜索的結(jié)果
map.centerAndZoom(point, 10);
marker = new BMap.Marker(point); // 創(chuàng)建標(biāo)注
map.addOverlay(marker); // 將標(biāo)注添加到地圖中
marker.enableDragging(); // 可拖拽
geoc.getLocation(point, function (rs) {
var addComp = rs.addressComponents;
that.mapPointName =
addComp.province +
", " +
addComp.city +
", " +
addComp.district +
", " +
addComp.street +
", " +
addComp.streetNumber;
});
} else {
console.log("未搜索到結(jié)果")
}
} else {
alert("未搜索到結(jié)果");
}
},
});
local.search("岳陽樓"); //要展示的地點(diǎn)
},5、在mounted函數(shù)中調(diào)用上述方法并繪制地圖
mounted() {
this.$nextTick(function () {
var _this = this;
MP(_this.ak).then((BMap) => {
let that = this;
this.dialogMap = !this.dialogMap;
if (that.mapGetshow) {
map = new BMap.Map("container"); //存放地圖容器的id
geoc = new BMap.Geocoder();
map.enableScrollWheelZoom();
}
_this.mapNameChange() //調(diào)用定位地點(diǎn)的方法
});
});
}到此這篇關(guān)于vue整合百度地圖顯示指定地點(diǎn)信息的文章就介紹到這了,更多相關(guān)vue 百度地圖顯示地點(diǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue項(xiàng)目中接口調(diào)用的詳細(xì)講解
應(yīng)公司需求,接口需要對接vue,記錄一下碰到的問題,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中接口調(diào)用的詳細(xì)講解,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
vue uniapp 防止按鈕多次點(diǎn)擊的三種實(shí)現(xiàn)方式
最近的項(xiàng)目完成后,在性能優(yōu)化階段需要做按鈕的防止重復(fù)點(diǎn)擊功能,本文主要介紹了vue uniapp 防止按鈕多次點(diǎn)擊的三種實(shí)現(xiàn)方式,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
vue實(shí)現(xiàn)簡易計(jì)時(shí)器組件
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)簡易計(jì)時(shí)器組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
VUE UPLOAD 通過ACTION返回上傳結(jié)果操作
這篇文章主要介紹了VUE UPLOAD 通過ACTION返回上傳結(jié)果操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09

