uni-app 离线打包高德地图版本问题 会导致地图显示不出或定位失效
uni-app 离线打包高德地图版本问题 会导致地图显示不出或定位失效
操作步骤
使用map组件离线打包
预期结果
能正常展示地图及定位
实际结果
地图不正常
bug描述
使用了<map>
组件,云端打包正常,离线打包地图组件空白。查看高德地图官网,怀疑是没有调用高德地图SDK的同意隐私政策方法。同时日志输出Didn't find class "com.amap.apis.utils.core.api.AMapUtilCoreApi"
,说明是在调用相关方法的时候没有找到类。
查看最新离线SDK中高德相关包implementation 'com.amap.api:3dmap:9.5.0'
, implementation 'com.amap.api:search:9.4.5'
。发现这两个的版本号都是比较老的,于是尝试提升版本将com.amap.api:search
提升到9.7.1版本后,地图能正常显示,但是出现另一个问题,定位uni.getLocation
不成功,日志提示No virtual method setNoLocReqCgiEnable(Z)V in class Lcom/amap/api/location/AMapLocationClientOption
,猜测是这个类少了这个方法,希望能告知云端打包的SDK版本,免去这种猜测式的尝试。目前问题还是没有解决,希望得到回复。
开发环境信息
项目创建方式 | PC开发环境操作系统 | PC开发环境操作系统版本号 | HBuilderX类型 | HBuilderX版本号 | 手机系统 | 手机系统版本号 | 手机厂商 | 手机机型 | 页面类型 | vue版本 | 打包方式 |
---|---|---|---|---|---|---|---|---|---|---|---|
HBuilderX | Windows | Windows 11 | 正式 | 4.29 | Android | Android 12 | 华为 | mate 60 | vue | vue3 | 离线 |
暂时解决了,不停的尝试发现implementation ‘com.amap.api:3dmap:10.0.600’ ,implementation 'com.amap.api:search:9.5.0’这个组合就正常了
我正好也遇到这个问题,换了之后就正常了,感谢分享
非常感谢,我也是按照文档 // 高德 // implementation ‘com.amap.api:3dmap:9.5.0’ // implementation ‘com.amap.api:search:9.4.5’ app打开位置白屏闪退,检查了三天,真的 毫不夸张T_T
真希望写文档的时候用点心,文档上说让看demo的版本号,然后demo的版本号又不对
是的,简直是个大坑,我是直接用的合包 implementation ‘com.amap.api:3dmap-location-search:latest.integration’
latest.integration后面可能会有问题,因为这样会使用最新的包
确实很坑
把文档从头到尾看了好几遍,例子也整了好几次,文档太坑了
幸好上来论坛搜搜,查代码查到我怀疑人生了
感谢, 官方给的demo真坑啊
感谢 , 这个问题查代码我找了一个月,一直都是我的心结 , 官方的demo是真坑
在uni-app中进行离线打包时,如果遇到高德地图版本问题导致地图显示不出或定位失效,通常是由于SDK版本不兼容或配置错误引起的。以下是一个确保高德地图在uni-app离线打包中正常工作的代码案例和配置步骤。
1. 确保高德地图SDK版本匹配
首先,确保你使用的高德地图SDK版本与uni-app支持的版本相匹配。你可以在uni-app的官方文档或高德地图开发者平台查找兼容版本信息。
2. 引入高德地图SDK
在manifest.json
文件中配置高德地图的SDK信息。例如:
"app-plus": {
"distribute": {
"android": {
"permissions": [
"android.permission.ACCESS_FINE_LOCATION",
"android.permission.ACCESS_COARSE_LOCATION",
"android.permission.INTERNET"
],
"sdkConfigs": {
"amap": {
"key": "你的高德地图Key",
"version": "最新稳定版本号"
}
}
},
"ios": {
// iOS相关配置,如果需要
}
}
}
3. 使用高德地图组件
在页面的.vue
文件中,使用高德地图组件。例如:
<template>
<view>
<map
id="map"
:longitude="longitude"
:latitude="latitude"
:markers="markers"
style="width: 100%; height: 500px;"
@tap="onMapTap"
/>
</view>
</template>
<script>
export default {
data() {
return {
longitude: 116.397428,
latitude: 39.90923,
markers: [
{
id: 1,
latitude: 39.90923,
longitude: 116.397428,
title: '北京'
}
]
};
},
methods: {
onMapTap(e) {
console.log('Map tapped', e);
}
}
};
</script>
<style scoped>
/* 样式可根据需求调整 */
</style>
4. 离线打包配置
在进行离线打包时,确保打包工具链(如HBuilderX)配置正确,且已包含高德地图SDK的相关依赖。如果使用的是自定义基座,需要在基座配置中同样添加高德地图SDK信息。
5. 测试与调试
在打包完成后,通过真机测试应用,检查地图显示和定位功能是否正常。如果出现问题,检查以下方面:
- 高德地图Key是否有效。
- SDK版本是否与uni-app兼容。
- 离线包是否包含所有必要的依赖库。
- 应用的权限配置是否正确。
通过上述步骤,通常可以解决uni-app离线打包时高德地图显示不出或定位失效的问题。如果问题依旧存在,建议查阅高德地图和uni-app的官方文档,或寻求社区和官方支持。