安装百度地图组件
npm install vue-baidu-map --save
vue项目使用百度地图
在main.js文件中加入
import BaiduMap from 'vue-baidu-map'
Vue.use(BaiduMap,{
ak:'XXXXXXXXXX'//自己去百度API申请,免费的
})
index.html页面中加入
<script type="text/javascript" src="https://api.map.baidu.com/api?v2.0&ak=XXXXXXXXXXXXXXXXX"></script>
创建main.js
export default {
init: function () {
const AK = "XXXXXXXXXXXXXX";
const BMap_URL = 'https://api.map.baidu.com/api?v=2.0&ak=' + AK + "&s=1&callback=onBMapCallback";
return new Promise((resolve, reject) => {
// 如果已加载直接返回
if (typeof BMap !== "undefined") {
resolve(BMap);
return true;
}
// 百度地图异步加载回调处理
window.onBMapCallback = function () {
resolve(BMap);
};
let getCurrentCityName = function () {
return new Promise(function (resolve, reject) {
let myCity = new BMap.LocalCity()
myCity.get(function (result) {
resolve(result.name)
})
})
}
// 插入script脚本
let scriptNode = document.createElement('script');
scriptNode.setAttribute('type', 'text/javascript');
scriptNode.setAttribute('src', BMap_URL);
document.body.appendChild(scriptNode);
});
}
}
vue获取经纬度页面
<template>
<div class="testAddr">
</div>
</template>
<script>
import map from 'map.js' //根据位置引入js
export default {
name: 'testAddr', // 反馈建议
created() {
this.getAddrTest();
},
methods: {
//测试获取经纬度
getAddrTest(){
alert(1)
map.init().then(BMap =>{
const locationCity = new BMap.Geolocation();
var that = this;
locationCity.getCurrentPosition(
function getinfo(options){
let city = options.address.city;
that.LocationCity = city;
console.log(options)
alert(city)
alert(`${options.latitude}` + ` ` +`${options.longitude}`)
alert(`${options.point.lng}` + ` ` +`${options.point.lat}`)
},
function (e){
that.LocationCity = '定位失败';
console.log('定位失败')
},
{provider:'baidu'}
)
})
},
},
};
</script>
项目必须部署到服务器,并且通过https访问!!!!重点!!!https!