echart地图在vue中报错:BMap api is not loaded

报错:

 

 

 原因:在mounted初始化地图的时候,因为异步问题会导致BMap is not defined,也就是百度的api还没完全引入或者加载完成,就已经进行地图初始化了

解决方法:(优化百度地图jssdk引入)

1.

require('echarts/extension/bmap/bmap');

2.新建一个map.js

  export function loadBMap(ak) {
    return new Promise(function(resolve, reject) {
        if (typeof BMap !== 'undefined') {
            resolve(BMap)
            return true
        }
        window.onBMapCallback = function() {
            resolve(BMap)
        }
        let script = document.createElement('script')
        script.type = 'text/javascript'
        script.src =
            'http://api.map.baidu.com/api?v=2.0&ak='+ ak +'&__ec_v__=20190126&callback=onBMapCallback'
        script.onerror = reject
        document.head.appendChild(script)
    })
}

3.在所需要的的页面中引入

import { loadBMap } from './map.js'

4.在mounted引用

this.$nextTick(() => {
  loadBMap("秘钥").then(() => {
     this.drawPie()
    })
})

这样就完成啦

 

posted @ 2020-09-04 14:22  星宝攸宁  阅读(7039)  评论(0)    收藏  举报