uni-app uni.getLocation高德定位失败

发布于 1周前 作者 yuanlaile 来自 Uni-App

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);
      }
    });
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!