HarmonyOS 鸿蒙Next中想把GPS坐标系转化为高德坐标系
HarmonyOS 鸿蒙Next中想把GPS坐标系转化为高德坐标系
想把GPS坐标系转化为高德坐标系
【背景知识】
位置服务的模块能力仅支持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)可以通过以下步骤实现:
-
使用CoordinateConverter类:HarmonyOS SDK提供了
ohos.geo.CoordinateConverter
类,支持坐标转换。首先创建一个CoordinateConverter
实例,并设置源坐标系为SourceCoordSys.WGS84
,目标坐标系为TargetCoordSys.GCJ02
。 -
执行转换:调用
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() 即为转换后的高德坐标
- 注意事项:
- 确保在
module.json5
中声明位置权限:ohos.permission.LOCATION
。 - 转换精度取决于系统实现,通常误差在可接受范围内。
- 确保在
此方法简洁高效,适用于HarmonyOS Next应用开发。