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 离线

更多关于uni-app 离线打包高德地图版本问题 会导致地图显示不出或定位失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

12 回复

暂时解决了,不停的尝试发现implementation ‘com.amap.api:3dmap:10.0.600’ ,implementation 'com.amap.api:search:9.5.0’这个组合就正常了

更多关于uni-app 离线打包高德地图版本问题 会导致地图显示不出或定位失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我正好也遇到这个问题,换了之后就正常了,感谢分享

非常感谢,我也是按照文档 // 高德 // 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的官方文档,或寻求社区和官方支持。

回到顶部