uni-app 离线打包高德地图版本问题 会导致地图显示不出或定位失效

发布于 1周前 作者 h691938207 来自 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 离线

12 回复

暂时解决了,不停的尝试发现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的官方文档,或寻求社区和官方支持。

回到顶部