uni-app android 4.44.2024123110 sdk 版本使用高德地图时出现地图不能显示空白问题
uni-app android 4.44.2024123110 sdk 版本使用高德地图时出现地图不能显示空白问题
操作步骤
按照官方文档集成高德集成
预期结果
正常显示地图
实际结果
地图区域空白
bug描述
按照官方文档集成高德集成,使用 4.4 版本 4.3 版本都会出现高德地图空白的问题,在 android studio 中会有如下的错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'io.dcloud.js.map.amap.JsMapObject io.dcloud.js.map.amap.JsMapManager.getJsObject(java.lang.String)' on a null object reference
2025-01-03 16:31:07.079 22748-22748 System.err com.gaozhipharm.helper W at io.dcloud.js.map.amap.JsMapPluginImpl$1.execute(JsMapPluginImpl.java:78)
2025-01-03 16:31:07.079 22748-22748 System.err com.gaozhipharm.helper W at io.dcloud.common.adapter.util.MessageHandler$1.handleMessage(SourceFile:3)
2025-01-03 16:31:07.079 22748-22748 System.err com.gaozhipharm.helper W at android.os.Handler.dispatchMessage(Handler.java:106)
2025-01-03 16:31:07.079 22748-22748 System.err com.gaozhipharm.helper W at android.os.Looper.loopOnce(Looper.java:205)
2025-01-03 16:31:07.079 22748-22748 System.err com.gaozhipharm.helper W at android.os.Looper.loop(Looper.java:294)
2025-01-03 16:31:07.079 22748-22748 System.err com.gaozhipharm.helper W at android.app.ActivityThread.main(ActivityThread.java:8417)
2025-01-03 16:31:07.079 22748-22748 System.err com.gaozhipharm.helper W at java.lang.reflect.Method.invoke(Native Method)
2025-01-03 16:31:07.079 22748-22748 System.err com.gaozhipharm.helper W at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
2025-01-03 16:31:07.079 22748-22748 System.err com.gaozhipharm.helper W at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:977)
开发环境信息
项目创建方式 | PC开发环境操作系统 | PC开发环境操作系统版本号 | HBuilderX类型 | HBuilderX版本号 | 手机系统 | 手机系统版本号 | 手机机型 | 页面类型 | vue版本 | 打包方式 |
---|---|---|---|---|---|---|---|---|---|---|
HBuilderX | Mac | 14.6.1 (23G93) | 正式 | 4.44 | Android | Android 14 | 魅族 21 | vue | vue3 | 离线 |
请先云端打包看是否可以正常运行?如果仅在离线打包环境下无法正常显示,说明离线打包原生配置不正确。
针对您提到的uni-app在Android 4.4.4(API Level 19)设备上,使用高德地图SDK版本4.44.2024123110时出现的地图不能显示(空白)问题,这可能是由于多种原因导致的,包括但不限于SDK与Android版本的兼容性、权限配置不当、地图初始化代码有误等。以下是一些常见的排查步骤和代码示例,帮助您定位并解决问题。
1. 检查权限配置
确保在manifest.json
中正确配置了高德地图所需的权限,包括网络权限和定位权限。
"permissions": {
"android.permission.INTERNET": {
"desc": "允许程序访问网络"
},
"android.permission.ACCESS_FINE_LOCATION": {
"desc": "允许程序获取精确位置"
},
"android.permission.ACCESS_COARSE_LOCATION": {
"desc": "允许程序获取粗略位置"
},
"android.permission.WRITE_EXTERNAL_STORAGE": {
"desc": "允许程序写入外部存储"
},
"android.permission.READ_EXTERNAL_STORAGE": {
"desc": "允许程序读取外部存储"
}
}
2. 初始化高德地图
在pages/index/index.vue
中,确保地图的初始化代码正确无误。
<template>
<view>
<map id="map" :longitude="longitude" :latitude="latitude" style="width: 100%; height: 100%;" />
</view>
</template>
<script>
export default {
data() {
return {
longitude: 116.397428, // 默认经度
latitude: 39.90923 // 默认纬度
};
},
mounted() {
this.initMap();
},
methods: {
initMap() {
// 初始化高德地图,这里假设您已经通过npm安装了高德地图SDK
const AMap = window.AMap;
if (AMap) {
const map = new AMap.Map('map', {
center: [this.longitude, this.latitude],
zoom: 10
});
} else {
console.error('高德地图SDK未正确加载');
}
}
}
};
</script>
3. 检查SDK版本兼容性
由于Android 4.4.4是一个较老的版本,可能存在某些API不兼容的情况。建议查阅高德地图SDK的官方文档,确认支持的最低Android版本。如果当前SDK版本不支持Android 4.4.4,考虑降级SDK版本或升级Android设备。
4. 调试与日志
使用Android Studio或ADB工具查看应用的日志输出,寻找与地图加载相关的错误信息,这有助于进一步定位问题。
adb logcat | grep -i map
以上步骤和代码示例应能帮助您开始排查和解决uni-app中使用高德地图SDK时出现的地图不能显示问题。如果问题依旧存在,建议联系高德地图的技术支持团队获取更专业的帮助。