美文网首页
【bmap】入口文件index 动态引入bmap报错?

【bmap】入口文件index 动态引入bmap报错?

作者: Adder | 来源:发表于2022-12-01 20:37 被阅读0次

这两天做项目的时候,使用到了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,可以了!

OHOHOHOHOHOHOH!!!

相关文章

网友评论

      本文标题:【bmap】入口文件index 动态引入bmap报错?

      本文链接:https://www.haomeiwen.com/subject/pakdfdtx.html