编译鸿蒙应用时 uni-app uni.getLocation 获取的定位不准确

编译鸿蒙应用时 uni-app uni.getLocation 获取的定位不准确

6 回复

鸿蒙上的系统定位,功能是稳定的。每次不一样是什么意思,多大范围的不同?

更多关于编译鸿蒙应用时 uni-app uni.getLocation 获取的定位不准确的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


对比了鸿蒙系统5.0,就是在6.0上有问题,每次调用误差在几公里到十几公里都有,鸿蒙5.0上是正常的,你们可以验证一下

回复 1***@163.com: 你可使用鸿蒙原生的工程对比测试一下。误差比较大,可能 是你开启了模糊定位,而不是精准定位。

回复 DCloud_UNI_OttoJi: 我现在有两台手机,一个系统是鸿蒙5.0的,一个是6.0的,同样的代码在鸿蒙5.0系统手机上定位是正常的,在6.0的手机上是不准的

回复 1***@163.com: 你可使用鸿蒙原生的工程对比测试一下。

在鸿蒙系统上使用uni-app的uni.getLocation获取定位不准确,通常与系统定位权限配置和定位模式选择有关。以下是关键排查点:

  1. 检查定位权限配置
    在鸿蒙项目的module.json5中确保已声明位置权限:

    "requestPermissions": [
      {
        "name": "ohos.permission.LOCATION",
        "reason": "获取定位信息"
      }
    ]
    

    需在真机上手动授权(鸿蒙权限需用户主动开启)。

  2. 优化定位参数
    调用时指定高精度模式及超时时间:

    uni.getLocation({
      type: 'gcj02',
      altitude: true, // 获取海拔(需要设备支持)
      isHighAccuracy: true, // 启用高精度
      highAccuracyExpireTime: 5000, // 高精度超时时间
      success: (res) => {
        console.log(`纬度: ${res.latitude}, 经度: ${res.longitude}`);
      },
      fail: (err) => {
        console.error('定位失败:', err);
      }
    });
回到顶部