美文网首页
【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