美文网首页
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