当前位置: 首页 > 工具软件 > angular-BMap > 使用案例 >

解决BMap is not defined?

欧浩淼
2023-12-01

除了上篇文章在配置文件中修改之外,还有其他方法,
先重复第一种


module.exports = {  
  entry: './src/main.js',  
  externals:{  
    'BMap':'BMap'  
  },  
...  
}  

然后在目标vue文件中调用

 import BMap from 'BMap'

后来我有朋友介绍了一个挺实用的方法,跟百度api官网里的异步加载很像,完美的解决了这个问题。在vue论坛里发现有朋友遇到类似的挂载类库出错的问题,我把这个方法分享给他后也轻松解决了,所以我觉得有必要分享给更多人。废话不多说,首先跟入口js一样,新建一个map.js

export function MP(ak) {  
  return new Promise(function (resolve, reject) {  
    window.onload = function () {  
      resolve(BMap)  
    }  
    var script = document.createElement("script");  
    script.type = "text/javascript";  
    script.src = "http://api.map.baidu.com/api?v=2.0&ak="+ak+"&callback=init";  
    script.onerror = reject;  
    document.head.appendChild(script);  
  })  
} 

在你的百度地图页面中调用(ak 就是你的密钥)

import {MP} from './map.js' 
mounted(){  
            this.$nextTick(function(){  
              var _this = this;  
              MP(_this.ak).then(BMap => {  
                          //在此调用api  

  }) 

同样的,挂载其他外部类库有问题时也可以尝试这样做。
对了,还可以这样引入地图

<script type =“text / javascript” 
         src =“http://api.map.baidu.com/api?key=&v=1.1&services=true”>
</ script>

或者

<script type =“text / javascript” 
        src =“http://api.map.baidu.com/api?v=1.0&ak=ui7X2CSu3ITjojARL4tILi5W1i9gkDVS”> 
</ script>

其中,下面的代码也可以在C#中正常显示的:((AK为我的应用)

 类似资料: