vue+echarts 百度地图上线后BMap api is not loaded,以及优化百度地图jssdk的引入


项目使用echarts的百度地图,本地可正常运行,但上线后报错BMap api is not loaded。记录解决过程,以及优化百度地图jssdk的进入。

1. 线上BMap api is not loaded

原来引入BMap是在使用到地图的组件中:

import 'echarts/extension/bmap/bmap'

这样引入本地是能够正常使用,但是上线后就出现了以下报错:
在这里插入图片描述
既然本地能够成功引入而线上报错,推测是打包过程出了问题。进入bmap官方github,有下列提示:

// 如果是 webpack 打包,也可以 require 引入
require('echarts');
require('echarts/extension/bmap/bmap');

因此将组件中的引入改为:

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

就OK了。

2. 优化百度地图jssdk引入

原本引入是在注册百度地图api后,在index.html下增加如下代码:

<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=密钥"></script>

然而项目中仅有一个组件使用到了百度地图,如此引入并不合理。参考了其他博客,新建一个js文件,内容为:

export default 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 + '&callback=onBMapCallback'
        script.onerror = reject
        document.head.appendChild(script)
    })
}

在组件中使用:

mounted() {
    loadBMap("密钥")
	   	.then(() => {
	   		// 配置option
	   		myChart.setOption(option)
		})
}
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值