通过动态script标签动态加载百度地图时,BMapGL is not defined

引入百度地图的两种方式:1. html文件中直接script标签引入  2. 异步加载

在实例工作中我没不想全局引入,通过动态的script动态引入:

你会发现只加载了上面这一个js,但js里面的代码没有执行(正常的情况是会执行并加载几个文件)报错BMapGL is not defined

有人说是因为:此时页面的dom已经全部加载完了,关闭了加载通道,document.write不能异步了,所以加载不上去

参考文档:https://lbsyun.baidu.com/index.php?title=jspopularGL/guide/usage

我们发现异步加载时带了一个callback参数,当脚本加载完成后callback函数会被立刻调用,所以我们就可以这样处理:

  window.onBMapCallback = function() {

var map = new BMapGL.Map('container', {

        restrictCenter: false

    });

    var point = new BMapGL.Point(118.6614, 36.2190);

    map.centerAndZoom(point, 8);

}

function LoadBaiduMapScript(){

let scriptNode = document.createElement("script");

scriptNode.type = "text/javascript";

scriptNode.src = "https://api.map.baidu.com/api?type=webgl&v=1.0&ak=你的密钥&callback1=onBMapCallback";

document.body.appendChild(scriptNode);

}

LoadBaiduMapScript()

你可能感兴趣的:(通过动态script标签动态加载百度地图时,BMapGL is not defined)