s***@askdwl.com
s***@askdwl.com
  • 发布:2026-07-28 09:22
  • 更新:2026-07-28 09:25
  • 阅读:29

【报Bug】ios离线打包配置了高德地图和定位,并且配置了UTS基础模块,uni.getLocation默认使用了腾讯定位,提示腾讯key未配置

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: dd

HBuilderX类型: 正式

HBuilderX版本号: 5.07

手机系统: iOS

手机系统版本号: iOS 26

手机厂商: 苹果

手机机型: iphone 17 pro max

页面类型: vue

vue版本: vue2

打包方式: 离线

项目创建方式: HBuilderX

示例代码:

uni.getLocation({
type: 'gcj02',
// success: reject,
success: function (res) {
resolve(res)
},
fail: (err) => {
reject(err)
},
});

打印{
"code": 0,
"errSubject": "uni-location",
"userInfo": {},
"message": "",
"errCode": 1505605,
"errMsg": "The Tencent api key is misconfigured.",
"name": "Error",
"domain": ""
}

watchId = plus.geolocation.watchPosition(function(p){
console.log('开始监听-------------------------------', p)

            }, function(e){  
                console.log('Geolocation error: ' + e.message);  

            }, {  
                enableHighAccuracy: true,  
                timeout: 35000,  
                maximumAge: 30000,  
                provider: 'amap',  
                coordsType: "gcj02",  
                geocode: false  
            });  

指定运营商是有数据的

{
"coordsType": "gcj02",
"coords": {
"latitude": 41.79888563368056,
"longitude": 123.6491783311632,
"accuracy": 4.673686912708209,
"altitude": 83.15362101114876,
"heading": null,
"speed": 0,
"altitudeAccuracy": 3
},
"timestamp": 1785201586699.337
}

操作步骤:

uni.getLocation

预期结果:

在配置了uts基础模块的情况下uni.getLocation使用高德

实际结果:

在配置了uts基础模块的情况下uni.getLocation未使用高德,提示腾讯key未配置

bug描述:

ios离线打包配置了高德地图和定位,并且配置了UTS基础模块,uni.getLocation默认使用了腾讯定位,提示腾讯key未配置

2026-07-28 09:22 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

针对您反馈的 Bug,我们进行了初步评审与分析,具体结论如下:

1. Bug 反馈内容完整性评审

  • BUG 描述:描述较为清晰,明确指出了在 iOS 离线打包且配置了 UTS 基础模块、高德地图和定位的前提下,uni.getLocation 默认使用了腾讯定位并提示 key 未配置。同时提供了 plus.geolocation.watchPosition 指定高德后正常的数据对比。
  • 代码示例:提供的代码片段基本可用,包含了 API 调用及打印出的错误对象,能够直观反映问题现象。
  • 复现步骤:复现步骤仅写了 uni.getLocation,稍显简略。建议补充在离线打包工程中具体的模块依赖配置情况,以便官方人员更快速地复现。
  • 预期与实际结果:预期结果合理(期望调用配置的高德定位),实际结果给出了明确的错误码和报错信息,便于排查。
  • 分类信息:包含了 HBuilderX 版本(5.07)、手机平台及机型等信息,分类完整。

2. Bug 是否成立分析

根据官方文档和知识库信息,在 App 端使用 uni.getLocation 时,定位 SDK 的调用规则与传入的坐标系参数(type)有直接关系:

  • 如果在 App 模块中同时勾选了系统定位和其他定位(如腾讯定位),由配置的 type 值决定调用规则type 值为 wgs84 使用系统定位,type 值为 gcj02 则使用腾讯定位。

您在代码中使用了 uni.getLocation({ type: 'gcj02' }),按照上述规则,系统会默认匹配并调用腾讯定位。由于您在离线打包配置了 UTS 基础模块(腾讯定位依赖于该模块),但未配置腾讯定位的 Key,因此触发了 The Tencent api key is misconfigured 报错。这说明当前现象符合框架既定的调用规则,并非框架未使用高德的缺陷。

解决建议

如果您希望在 App 端强制使用高德定位而不是腾讯定位,可以通过在 API 中显式指定 provider'amap' 来实现。参考代码:

uni.getLocation({  
    type: 'gcj02',  
    provider: 'amap', // 明确指定使用高德定位SDK  
    success: function (res) {  
        console.log(res);  
    },  
    fail: (err) => {  
        console.log(err);  
    }  
});

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
此外,plus.geolocation API 也支持通过 provider: 'amap' 来指定高德定位模块。

内容为 AI 生成,仅供参考
s***@askdwl.com

s***@askdwl.com (作者)

uni.getLocation并不能指定provider: 'amap'

要回复问题请先登录注册