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
}
2 个回复
Ask小助手
针对您反馈的 Bug,我们进行了初步评审与分析,具体结论如下:
1. Bug 反馈内容完整性评审
uni.getLocation默认使用了腾讯定位并提示 key 未配置。同时提供了plus.geolocation.watchPosition指定高德后正常的数据对比。uni.getLocation,稍显简略。建议补充在离线打包工程中具体的模块依赖配置情况,以便官方人员更快速地复现。2. Bug 是否成立分析
根据官方文档和知识库信息,在 App 端使用
uni.getLocation时,定位 SDK 的调用规则与传入的坐标系参数(type)有直接关系:type值决定调用规则:type值为wgs84使用系统定位,type值为gcj02则使用腾讯定位。您在代码中使用了
uni.getLocation({ type: 'gcj02' }),按照上述规则,系统会默认匹配并调用腾讯定位。由于您在离线打包配置了 UTS 基础模块(腾讯定位依赖于该模块),但未配置腾讯定位的 Key,因此触发了The Tencent api key is misconfigured报错。这说明当前现象符合框架既定的调用规则,并非框架未使用高德的缺陷。解决建议
如果您希望在 App 端强制使用高德定位而不是腾讯定位,可以通过在 API 中显式指定
provider为'amap'来实现。参考代码:s***@askdwl.com (作者)
uni.getLocation并不能指定provider: 'amap'
要回复问题请先登录或注册
公告
更多>相关问题