uni-app app端使用云打包后uni.chooseLocation显示异常

uni-app app端使用云打包后uni.chooseLocation显示异常

示例代码:

uni.chooseLocation({
success: async (res) => {
console.log('== chooseLocation success res', res);
},
fail: (err) => {
console.log('== chooseLocation fail err', err);
},
});


## 操作步骤:

- 调用uni.chooseLocation方法

## 预期结果:

- 正常打开腾讯地图

## 实际结果:

- 无法显示腾讯地图

## bug描述:

HBuilderX 4.87 使用vue2 app安卓端

使用uni.chooseLocation打开腾讯地图,直接使用usb连接手机,可以正常打开,使用云打包后,腾讯地理打开异常。另外使用uni.getLocation可以得到正常返回,只有uni.chooseLocation异常。

更多关于uni-app app端使用云打包后uni.chooseLocation显示异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html

10 回复

该bug反馈内容基本完整,但存在关键缺失:未说明云打包具体版本,且manifest.json中地图配置细节不足(如是否启用安全网络)。代码示例简洁可复现,但缺少项目关联uniCloud的配置信息。
bug成立,主要基于知识库依据:腾讯地图gcj02坐标免费接口已于2024年7月18日下线,导致旧版uni-app调用异常。用户使用HBuilderX 4.87(对应uni-app版本低于4.24),而知识库明确要求必须升级至uni-app 4.24+才能解决此问题。云打包环境若未同步更新SDK会导致标准基座与云打包行为不一致(USB调试正常但云打包异常)。
核心问题在于:App端uni.chooseLocation依赖的地点搜索功能需通过uniCloud安全网络调用,而非仅配置manifest.json中的key。用户虽配置了腾讯地图key,但未按文档要求设置安全网络模块(需关联uniCloud服务空间、导入uni-map-common插件、勾选安全网络模块)。同时需确认域名白名单设置为空。
建议操作:1. 升级HBuilderX至最新版(确保uni-app内核≥4.24);2. 按安全网络配置指南完善uniCloud集成;3. 检查云打包使用的SDK是否为最新。若仍异常,参考地图服务商说明确认key权限配置。 内容为 AI 生成,仅供参考

更多关于uni-app app端使用云打包后uni.chooseLocation显示异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html


manifest 中配置的key包名和云打包中的包名一致吗?

uni.getLocation都可以用,肯定是一致的

麻烦快点看看

回复 3***@qq.com: getLocation是有保底逻辑的,不能以这个的成功作为判断标准,通常来说就是地图厂商后台配置的信息与你应该打包是填写的信息不一致导致的

补充一条,使用自定义基座进行调试,控制台报
[JS Framework] 当前运行的基座不包含原生插件[mapSearch],请在manifest中配置该插件,重新制作包括该原生插件的自定义运行基座 09:29:16.674 Gelocation Error: code - 18; message - not support gcj02 at template/__uniappchooselocation.nvue:292 (见图一)
相关的minifest配置项见图二、图三,有漏掉的配置项吗



如果修改 key 之后,需要重新打一遍自定义基座

最后一个疑问,app端,uni.chooseLocation到底能不能用腾讯地图,minifest里是有腾讯地图选项的

官方的能看一下问题吗

云打包后uni.chooseLocation异常,通常与以下原因有关:

  1. 权限配置问题
    云打包时需在manifest.json中正确配置地图模块和权限。
    • 打开manifest.jsonApp模块配置 → 勾选Maps(地图) → 选择腾讯地图
    • App权限配置中确保已添加以下权限:
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
回到顶部