js(cordova) 百度地图 问题总结

1.v3.0版本白宫无法添加标注,国内可以,v2.0白宫也可以

2.android平台接入百度地图v2.0和v3.0后会导致其他插件用不了

在这里插入图片描述

2.1 解决办法

在地图界面出现的时候,就要加载地图,代码如下:

$(function(){
    glPoint = new BMapGL.Point(lngMy, latMy)
reLocate()
})

function reLocate() {
    apiGL()
}
//经度
var lngMy = 116.397428;
//纬度
var latMy = 39.90923;

var marker;
var glPoint
function apiGL() {
    // var glPoint = new BMapGL.Point(-77.0365298, 38.8976763)
    var map = new BMapGL.Map('container');
map.centerAndZoom(glPoint, 18);
map.enableScrollWheelZoom(true);
var opts = {
    position: glPoint, // 指定文本标注所在的地理位置
    offset: new BMapGL.Size(30, -30) // 设置文本偏移量
};
// 创建文本标注对象
var label = new BMapGL.Label('🔐', opts);
// 自定义文本标注样式
label.setStyle({
    color: 'blue',
    borderRadius: '5px',
    borderColor: '#ccc',
    padding: '10px',
    fontSize: '16px',
    height: '30px',
    lineHeight: '30px',
    fontFamily: '微软雅黑'
});
map.addOverlay(label);
}

3.接入百度地图v2.0或是v3.0后,ios端也会出现问题

3.1 问题一:解决方案

在这里插入图片描述

貌似和这个弹框的插件cordova-plugin-dialogs有关。如下图,我把弹框的代码不调用,app就不会死了

在这里插入图片描述

4.目前我用异步的方式加载v2.0的API,现在就只剩下和cordova-plugin-dialogs冲突的问题,我要不就把cordova-plugin-dialogs用别的插件替代了,要不就用比V3.0更新的JavaScript API GL

异步加载代码如下:

        <script type="text/javascript">  
            function initialize() {  
                console.log("异步加载完成")
                  var mp = new BMap.Map('container');  
  mp.centerAndZoom(new BMap.Point(121.491, 31.233), 11); 
//   ggPoint = new BMap.Point(116.397428,39.90923); 
//   reLocate()
            }  
               console.log("进来")
            function loadScript() {  
              var script = document.createElement("script");  
              script.src = "http://api.map.baidu.com/api?v=2.0&ak=我的key&callback=initialize";
              document.body.appendChild(script);  
            }  
               
            window.onload = loadScript;  
            </script>  

5.换了JavaScript API GL,在iOS端还是和cordova-plugin-dialogs插件冲突,出现闪退

6.上面所有有关iOS和andoid端插件冲突的问题,只要在onDeviceReady后再调用相关插件方法,starApp()就可以解决

应该是start,代码如下

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
  starApp()
}

7.现在所有的问题已经解决,用的是JavaScript API v2.0,异步加载,在百度的script加载完后,再startApp(),代码如下

function initialize() {  
  console.log("initialize")
  reLocate()
  starApp()
}  
   
function loadScript() {  
  console.log("window.onload")
  var script = document.createElement("script");  
  script.src = "http://api.map.baidu.com/api?v=2.0&ak=我的key&callback=initialize";
  document.body.appendChild(script);  
}  
   
window.onload = loadScript; 

8.用上面的代码,之前出现的如下问题都迎刃而解,自动消失了

8.1 Uncaught ReferenceError: XX(BMap) is not defined

在这里插入图片描述
在这里插入图片描述

8.2 Failed to load resource: net::ERR_FILE_NOT_FOUND

在这里插入图片描述
在这里插入图片描述

8.3 undefined is not an object (evaluating ‘c.x‘)

在这里插入图片描述

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页