文档管理中心
您当前正在浏览新版开发者文档中心,目录分类和层级有所调整。点击左侧当前文档分类名称前的“☰”图标,可切换文档分类。 了解新版目录
问题处理与运维开发与测试问题应用服务开发地图服务(Map Kit)定位结果在地图上显示时存在偏差

定位结果在地图上显示时存在偏差

问题现象

应用在使用Map Kit地图服务时,地图上显示的位置标记点与实际地理位置存在偏差。

背景知识

  • 华为地图涉及2种坐标系:
    1. WGS84:一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。
    2. GCJ02:由中国国家测绘局制订的地理信息系统的坐标系统,是由WGS84坐标系经过加密后的坐标系。
  • 华为地图在中国大陆、中国香港和中国澳门使用GCJ02坐标系,中国台湾和海外使用WGS84坐标系,若使用WGS84坐标系直接叠加在华为地图上,因坐标值不同,展示位置会有偏移。所以,在中国大陆如果使用WGS84坐标调用Map Kit服务,需要先将其转换为GCJ02坐标系再访问,参考:坐标纠偏。
  • ohos.permission.LOCATION:精准定位权限,允许应用获取设备位置信息。
  • LocatingPriority:位置请求中的优先级类型,PRIORITY_ACCURACY表示精度优先,PRIORITY_LOCATING_SPEED表示速度优先。

问题定位

  1. 是否坐标来源是位置服务的getCurrentLocation或geoLocationManager.on('locationChange')接口,位置服务获取的坐标为WGS84坐标系,需要转换为GCJ02坐标系。
  2. 如果使用位置服务获取的坐标已经转换为GCJ02坐标,显示的位置仍不准确,可能是位置服务获取的位置不准确,需排查定位权限和定位策略是否配置正确,参见获取当前设备位置信息不准确。
  3. 如果传入Map Kit的坐标不是WGS84坐标,需确定坐标来源和坐标系,使用相应的算法转换为GCJ02坐标后,在Map Kit中使用。

分析结论

传入的坐标非GCJ02坐标系;未申请精准定位权限ohos.permission.LOCATION;未配置定位策略为精度优先。

修改建议

  1. 将位置服务获取的WGS84坐标转换为GCJ02坐标,再传入地图,参见坐标纠偏。
  2. 申请精准定位权限ohos.permission.LOCATION,配置定位策略为精度优先(LocatingPriority配置为PRIORITY_ACCURACY),具体操作参见获取当前设备位置信息不准确。

常见FAQ

Q:除了convertCoordinate方法可以转换坐标,还有什么方式可以把WGS84坐标系转为GCJ02坐标系?

A:使用rectifyCoordinate接口可以解决原始坐标与华为地图展示偏转的问题,且仅支持WGS84坐标系转为GCJ02坐标系。

Q:convertCoordinateSync和rectifyCoordinate两种坐标纠偏接口有什么差异?

A:convertCoordinateSync接口仅固定的将输入坐标数据进行WGS84坐标系转GCJ02坐标系。rectifyCoordinate接口会判断输入坐标数据信息,自动决定是否进行坐标系转换纠偏,如应用涉及海外使用地图场景,建议使用该接口。