HarmonyOS鸿蒙Next中geoLocationManager获取经纬度应用在不同坐标系如何转化

HarmonyOS鸿蒙Next中geoLocationManager获取经纬度应用在不同坐标系如何转化 geoLocationManager.getCurrentLocation 获取的定位信息经纬度 仅支持WGS84坐标系,把经纬度应用在百度地图上 会出现定位误差问题,请问如何转化 坐标系 应用在百度地图上呢?

3 回复


上面的问题解决了吗
能分享分享怎么解决的吗
我也遇到了同样的问题
误差还挺大

更多关于HarmonyOS鸿蒙Next中geoLocationManager获取经纬度应用在不同坐标系如何转化的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,geoLocationManager获取的经纬度通常基于WGS-84坐标系。如果需要将WGS-84坐标转换为其他坐标系(如GCJ-02或BD-09),可以使用以下方法:

  1. WGS-84转GCJ-02:GCJ-02是中国国家测绘局制定的坐标系,用于国内地图服务。可以使用公开的转换算法,如火星坐标系转换算法,将WGS-84坐标转换为GCJ-02。

  2. WGS-84转BD-09:BD-09是百度地图使用的坐标系。可以通过先将WGS-84转换为GCJ-02,再将GCJ-02转换为BD-09的方式实现。

  3. GCJ-02转BD-09:如果已经获得GCJ-02坐标,可以直接使用百度提供的转换算法将其转换为BD-09。

这些转换算法可以在HarmonyOS应用中以库函数或自定义函数的形式实现。具体实现可以参考公开的转换公式或使用现有的开源库。转换过程中需要注意精度和边界条件,以确保坐标转换的准确性。

在HarmonyOS鸿蒙Next中,使用geoLocationManager获取的经纬度默认基于WGS84坐标系。若需转换到其他坐标系(如GCJ02或BD09),可通过以下步骤:

  1. WGS84转GCJ02:使用CoordinateConverter类,调用convert方法,传入WGS84坐标和目标坐标系CoordinateType.GCJ02
  2. WGS84转BD09:同样使用CoordinateConverter,目标坐标系为CoordinateType.BD09
  3. GCJ02转BD09:先通过CoordinateConverter将GCJ02转回WGS84,再转BD09。

转换代码示例:

CoordinateConverter converter = new CoordinateConverter();
converter.coord(new GeoPoint(latitude, longitude));
GeoPoint convertedPoint = converter.convert(CoordinateType.GCJ02);

确保引入ohos.location.geoLocationManagerohos.location.CoordinateConverter相关类库。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!