这两天做项目的时候,使用到了echart,在使用其中的地图图表的时候,需要用到bmap
需要注意的是,需要保证需要在init之前,保证bmap已经引入了;
按照网上教程,直接在index.html入口页面,加上一行
<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=您的密钥"></script>
就可以了,不过我想把这里的秘钥换成环境变量,通过配置去使用,写法就需要更换一下了
不过发现配置成动态加载之后,还是报错:使用之前没有引入bmap!!!
栓Q,行吧,进去看下script
是怎么个初始化
其实里面也是一行引入script
标签的立即执行脚本
(function () {
window.BMap_loadScriptTime = new Date().getTime();
document.write(
`<script type="text/javascript" src="http://api.map.baidu.com/getscript?v=3.0&ak=你的秘钥&services=&t=${BMap_loadScriptTime}"></script>`
);
})();
原来本体在这呢,所以我们来调整下
<script>
const BMAP_AK = parseConfig("__BMAP_AK__");
const script = document.createElement('script');
script.type = "text/javascript"
script.src = `https://api.map.baidu.com/api?v=3.0&ak=${BMAP_AK}`;
const head = document.getElementsByTagName('head')[0];
head && head.appendChild(script);
script.onload = () => {
const script1 = document.createElement('script');
script1.src = `https://api.map.baidu.com/getscript?v=3.0&ak=${BMAP_AK}&services=&t=${(new Date()).getTime()}`
script1.type = "text/javascript"
head && head.appendChild(script1);
}
</script>
首先引入第一个script
再引入第二个script
,可以了!
网友评论