uni-app 小米手机安卓11下调用map.addOverlay(marker);方法百度地图闪退 高德地图无问题 请尽快回复

uni-app 小米手机安卓11下调用map.addOverlay(marker);方法百度地图闪退 高德地图无问题 请尽快回复

1 回复

更多关于uni-app 小米手机安卓11下调用map.addOverlay(marker);方法百度地图闪退 高德地图无问题 请尽快回复的实战教程也可以访问 https://www.itying.com/category-93-b0.html


问题分析:

根据描述,问题出现在小米手机(Android 11)上使用 uni-app 调用 map.addOverlay(marker) 方法时,百度地图闪退,而高德地图正常。这通常与以下原因有关:

  1. 百度地图 SDK 兼容性问题:特定 Android 版本或小米机型上,百度地图 SDK 可能存在兼容性缺陷。
  2. 权限或配置问题:百度地图对 Android 11 的权限适配可能不完善。
  3. Marker 数据异常:传入的 marker 数据可能包含百度地图无法处理的字段。

解决步骤:

  1. 检查百度地图 SDK 版本
    确保使用的是最新版百度地图 SDK(建议 ≥ 4.3.6)。在 manifest.json 中确认配置:

    "permission": {
      "BaiduMap": {
        "provider": "baidu",
        "version": "4.3.6" // 检查是否为最新
      }
    }
    
  2. 验证 Android 11 权限适配
    Android 11 加强了权限管理,需在 manifest.json 中添加以下配置:

    "android": {
      "permissions": [
        "android.permission.ACCESS_FINE_LOCATION",
        "android.permission.ACCESS_COARSE_LOCATION"
      ],
      "requestLegacyExternalStorage": true // 若涉及文件存储需添加
    }
    
  3. 简化 Marker 数据测试
    尝试使用最简化的 marker 数据排除参数问题:

    map.addOverlay({
      id: 'test',
      latitude: 39.909,
      longitude: 116.397,
      iconPath: '/static/marker.png'
    })
    
  4. 查看原生错误日志
    通过 adb logcat 或 HBuilderX 控制台抓取闪退时的详细堆栈信息,重点搜索 BaiduMapNullPointerException 等关键词。

  5. 临时解决方案
    若急需上线,可考虑条件编译针对小米机型临时切换至高德地图:

    // #ifdef MP-WEIXIN || APP-PLUS
    if (uni.getSystemInfoSync().brand === 'Xiaomi') {
      // 使用高德地图
    } else {
      // 使用百度地图
    }
    // #endif
回到顶部