uni-app uni.getLocation高德定位失败
uni-app uni.getLocation高德定位失败
测试过的手机:
- 小米
- vivo
- apple
示例代码:
plus.geolocation.watchPosition(function(p) { //监听设备位置变化信息
}, function(e) { //获取设备位置信息失败回调函数
console.log(e)
}, {
enableHighAccuracy: true, //是否高精确度获取位置信息,高精度获取表示需要使用更多的系统资源。
maximumAge: 60000, //获取位置信息的间隔时间
provider: 'amap', //'amap' 高德地图
geocode:true
});
操作步骤:
选择授权给APP“大致位置”,返回错误;授权“精确位置”,正常返回当前设备位置数据
plus.geolocation.watchPosition(function(p) { //监听设备位置变化信息
}, function(e) { //获取设备位置信息失败回调函数
console.log(e)
}, {
enableHighAccuracy: true, //是否高精确度获取位置信息,高精度获取表示需要使用的更多系统资源。
maximumAge: 60000, //获取位置信息的间隔时间
provider: 'amap', //'amap' 高德地图
geocode:true
});
预期结果:
正常返回当前设备位置数据
实际结果:
选择授权给APP“大致位置”,返回错误 错误信息:
{
"code": 4,
"message": "[geolocation:6]定位结果错误 请到http://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode/查看错误码说明,错误详细信息:#id:Sb2ppbmRtbXJnZmRkNnFxbmpuc2dsNzk4M2Q4YTAyLA==#csid:103757e063ab4d138d8e57f4c6adccddlocation faile retype: rdesc:101#0601#pm111011"
}
bug描述:
选择授权给APP“大致位置”,返回错误;授权“精确位置”,正常返回当前设备位置数据 错误信息:
{
"code": 4,
"message": "[geolocation:6]定位结果错误 请到http://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode/查看错误码说明,错误详细信息:#id:Sb2ppbmRtbXJnZmRkNnFxbmpuc2dsNzk4M2Q4YTAyLA==#csid:103757e063ab4d138d8e57f4c6adccddlocation faile retype: rdesc:101#0601#pm111011"
}
项目信息 | 描述 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Windows |
PC开发环境版本号 | Windows11 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 3.99 |
手机系统 | 全部 |
手机厂商 | 华为 |
页面类型 | vue |
Vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
2 回复
还有有个问题,APP如何配置用户选择时出现选择“大致位置”和精确位置。拿我的小米14举例,在手机设置-权限管理-位置-开启扩展模糊位置支持(开启后,支持所以应用在授权时选择授权模糊位置),才可以出现选择。不然没有选择,调用API时就直接会返回定位错误。
在使用 uni-app 开发时,如果 uni.getLocation
在高德地图上定位失败,可能有多种原因导致。以下是一些常见的问题及解决方法:
1. 检查配置
- 高德地图 Key 配置:确保在
manifest.json
中正确配置了高德地图的 AppKey。"app-plus": { "maps": { "amap": { "key": "你的高德地图AppKey" } } }
- 权限配置:确保在
manifest.json
中启用了定位权限:"permission": { "scope.userLocation": { "desc": "你的位置信息将用于定位" } }
2. 检查设备权限
- Android/iOS 权限:确保在设备上开启了定位权限。可以在设备的设置中检查应用是否被授予了定位权限。
- 模拟器问题:部分模拟器可能不支持定位功能,建议在真机上测试。
3. 调试代码
- 检查
uni.getLocation
的调用方式是否正确:uni.getLocation({ type: 'wgs84', // 或 'gcj02' success: function (res) { console.log('定位成功', res); }, fail: function (err) { console.error('定位失败', err); } });