HarmonyOS 鸿蒙Next中想把GPS坐标系转化为高德坐标系

HarmonyOS 鸿蒙Next中想把GPS坐标系转化为高德坐标系

想把GPS坐标系转化为高德坐标系

5 回复

【背景知识】

位置服务的模块能力仅支持WGS84坐标系,参考:位置服务

【解决方案】

将WGS84坐标系转换为GCJ02坐标系: WGS84转换成GCJ02有官方提供的接口,可直接使用:WGS84坐标系转换为GCJ02坐标系

更多关于HarmonyOS 鸿蒙Next中想把GPS坐标系转化为高德坐标系的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


高德坐标就是使用的国家火星坐标系,没有二次加密,直接用 API 纠偏就行

将GPS使用的WGS84坐标系转换为高德地图所需的GCJ02坐标系

可参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/map-convert-coordinate

在HarmonyOS Next中,GPS坐标系(WGS-84)转高德坐标系(GCJ-02)需使用系统提供的坐标转换能力。通过geoLocationManager模块的convert方法,指定源坐标系为CoordinateSystemType.WGS84,目标坐标系为CoordinateSystemType.GCJ02,传入经纬度参数即可获取转换结果。转换过程在设备端完成,无需网络依赖。具体实现需参考鸿蒙官方文档中位置服务相关API说明。

在HarmonyOS Next中,将GPS坐标系(WGS-84)转换为高德坐标系(GCJ-02)可以通过以下步骤实现:

  1. 使用CoordinateConverter类:HarmonyOS SDK提供了ohos.geo.CoordinateConverter类,支持坐标转换。首先创建一个CoordinateConverter实例,并设置源坐标系为SourceCoordSys.WGS84,目标坐标系为TargetCoordSys.GCJ02

  2. 执行转换:调用convert()方法,传入GPS坐标(经纬度),返回转换后的高德坐标。

示例代码:

import ohos.geo.CoordinateConverter;
import ohos.geo.Coordinate;

// 假设原始GPS坐标
double lat = 39.9042; // 纬度
double lon = 116.4074; // 经度

CoordinateConverter converter = new CoordinateConverter();
converter.setSourceCoordSys(CoordinateConverter.SourceCoordSys.WGS84);
converter.setTargetCoordSys(CoordinateConverter.TargetCoordSys.GCJ02);

Coordinate result = converter.convert(lon, lat);
// result.getLongitude() 和 result.getLatitude() 即为转换后的高德坐标
  1. 注意事项
    • 确保在module.json5中声明位置权限:ohos.permission.LOCATION
    • 转换精度取决于系统实现,通常误差在可接受范围内。

此方法简洁高效,适用于HarmonyOS Next应用开发。

回到顶部