目录

获取当前设备位置信息不准确

问题现象

使用Location Kit位置服务获取当前设备位置时,返回的位置与实际位置有误差。

背景知识

Location Kit(位置服务):位置子系统使用多种定位技术提供服务,如GNSS定位、基站定位、WLAN/蓝牙定位(基站定位和WLAN/蓝牙定位后续统称为“网络定位技术”);通过这些定位技术,无论用户设备在室内或是户外,都可以准确地确定设备位置。

  1. 申请位置权限:应用可以通过checkAccessToken接口检查用户是否已向您的应用授予特定权限,然后使用requestPermissionsFromUser接口请求相应的权限(参考应用权限申请开发实践)。系统提供的定位权限有:

    ohos.permission.LOCATION:用于获取精准位置,精准度在米级别。

    ohos.permission.APPROXIMATELY_LOCATION:用于获取模糊位置,精确度为5公里。

    ohos.permission.LOCATION_IN_BACKGROUND:用于应用切换到后台仍然需要获取定位信息的场景。

    使用获取设备位置功能前请在module.json5中添加位置相关权限,权限的添加方法请参考声明权限,更多权限申请内容请参考申请应用权限。

  2. 获取设备的位置信息:本模块能力仅支持WGS84坐标系,需注意坐标纠偏。

问题定位

  1. 检查module.json5配置文件的requestPermissions标签中是否声明了ohos.permission.LOCATION权限。同时,检查是否通过requestPermissionsFromUser接口请求ohos.permission.LOCATION精准位置权限。
  2. 检查代码中获取定位信息的API接口,位置请求参数的定位策略设置是否以精度优先。以单次定位的请求参数(SingleLocationRequest)为例,检查locatingPriority是否设置为PRIORITY_ACCURACY。
  3. 确定设备定位的环境是否为空旷的室外。室内环境和有高大建筑遮挡时,无GPS信号,此时位置服务会使用网络定位,网络定位的精度相对较低。

分析结论

修改建议