美文网首页
ios获取经纬度坐标偏差

ios获取经纬度坐标偏差

作者: 白白白大爷_SimonLau | 来源:发表于2020-06-23 15:05 被阅读0次

    1,背景

    原生native提供的获取当前所在的经纬度坐标,传到后端进行校验,后端使用的是百度地图。发现:安卓获取经纬度精度没问题,但ios获取的精度总是不对。

    2,问题分析

    经资料收集,发现不同手机系统采用的是不同地图公司的数据,各地图公司使用的是不同坐标系。而公司native底层,安卓是使用的百度地图,iOS是使用的高德地图,因此安卓手机获取的经纬度可直接使用,而IOS则需要进行坐标转换。

    · 百度地图使用的是BD-09坐标系

    · 高德地图、腾讯地图以及谷歌中国区地图使用的是GCJ-02坐标系

    3,解决方案

    笔者这里使用gcoord库,通过把GCJ-02坐标转为BD-09坐标。按理这时候问题应该解决了。然而,转换后得到的经纬度还是和目标经纬度有差距。问题出在哪?

    https://github.com/hujiulong/gcoord

    原来,原生开发调用底层api, 如CLLocationManagger,获取到的是WGS-84坐标系的经纬度。因此转换过程应该是把WGS-84坐标转为BD-09坐标。

    使用 WGS84 坐标系统:

    · 苹果的 CLLocationManager 获取的坐标

    · HTML5 Geolocation

    4,关于坐标标准

    WGS-84 - 世界大地测量系统

    World Geodetic System, WGS 世界通用的坐标系,GPS设备得到的经纬度就是在WGS84坐标系下的经纬度。

    GCJ-02 - 国测局坐标

    火星坐标系,由中国国测局制定,对中国各地经纬度进行加密处理。

    BD-09 - 百度坐标系

    百度地图使用的地理坐标系,其在GCJ-02上多增加了一次变换,用来保护用户隐私。

    相关文章

      网友评论

          本文标题:ios获取经纬度坐标偏差

          本文链接:https://www.haomeiwen.com/subject/fxbcfktx.html