名词解析:
- 地球坐标:指 WGS-84 坐标系统,国际通用标准- 火星坐标:指 GCJ-02 坐标系统,使用国家保密插件偏移后的坐标- 地球地图:指与地球坐标对应的客观真实的地图- 火星地图:指经过加密偏移后的,与火星坐标对应的地图
简单对比:
| Google Map | MapKit | |
|---|---|---|
| 地图显示 | 火星地图 | 火星地图 |
| 定位得到的坐标 | 地球坐标(WGS-84); 地图位置打点:不准确 |
地球坐标(WGS-84); 地图位置打点:准确 |
| 点击地图获取到的坐标 | 火星坐标(GCJ-02) | 火星坐标(GCJ-02) |
| 通过代码给地图打点接收的坐标 | 火星坐标(GCJ-02) | 火星坐标(GCJ-02) |
小结:
不管是用 GoogleMapSDK 还是 MapKit ,在国内显示的地图都是火星地图,所以在地图上打坐标点,接收的都应该是 火星坐标(GCJ-02) ,这样才能正确地打点。而通过系统 CoreLocation 框架的 CLLocationManager 或者 DJI-SDK 给到我们的坐标数据都是 地球坐标(WGS-84) ,所以都需要将其转换为 火星坐标(GCJ-02) 。
目前找到的比较准确的坐标转换库:eviltransform
Demo 显示结果对比:
- Google Map
从 Demo 里可以看出 Google Map 当前定位打点是不准确的
- MapKit
蓝色圆点是 MapKit 本身的定位打点,大头针位置点是通过 CLLocationManager 获取当前位置,转换坐标后在 地图上显示的。
