1、封装一个js文件
// bmpgl.js
export function BMPGL (ak) { // ak为百度地图api申请应用后获得
return new Promise(function (resolve, reject) {
window.init = function () {
// eslint-disable-next-line
resolve(BMapGL)
}
const script = document.createElement('script')
script.type = 'text/javascript'
script.src = `http://api.map.baidu.com/api?v=1.0&type=webgl&ak=${ak}&callback=init`
script.onerror = reject
document.head.appendChild(script)
})
}
2、在需要的页面引入js文件
import { BMPGL } from '@/assets/js/bmpgl'
3、封装为一个方法
getGeo (location) { // 解析省份地理坐标
console.log('解析省份地理坐标内部', location)
return new Promise((resolve, reject) => {
BMPGL(this.ak).then((BMapGL) => {
const myGeo = new BMapGL.Geocoder()
// eslint-disable-next-line no-unused-vars
const p = null
myGeo.getPoint(location, p => {
if (p) {
console.log('解析成功', p)
resolve(p)
} else {
console.log('解析失败')
}
})
}).catch(err => {
console.log('errrrr', err)
reject(err)
})
})
}
4、方法的调用
await that.getGeo('北京').then(res => {
console.log('解析的地理坐标', res)
})