名词解析:

    1. - 地球坐标:指 WGS-84 坐标系统,国际通用标准
    2. - 火星坐标:指 GCJ-02 坐标系统,使用国家保密插件偏移后的坐标
    3. - 地球地图:指与地球坐标对应的客观真实的地图
    4. - 火星地图:指经过加密偏移后的,与火星坐标对应的地图

    简单对比:

    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 当前定位打点是不准确的
    Google Map SDK 和 MapKit 地图坐标简单对比 - 图1

    • MapKit

    蓝色圆点是 MapKit 本身的定位打点,大头针位置点是通过 CLLocationManager 获取当前位置,转换坐标后在 地图上显示的。
    Google Map SDK 和 MapKit 地图坐标简单对比 - 图2