[iOS] 地图坐标的坑

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zyb050607/article/details/49741809

        最近没有更新文章,主要是有点忙(lan)。程序中用到了地图的功能,这个之前做过LBS类的,显示周边的兴趣点,当时一切正常,忽略了坐标这个问题。

        没时间看的同学可以直接看结论:iOS使用CLLocationManager获得的是地球坐标(WGS84),需要转换为火星坐标(GCJ-02),工具下载地址

问题名称:地图坐标系问题

表现症状:iOS使用CLLocationManager获得位置之后,在地图上显示会有漂移,发送给安卓,显示也不正常。

原因:GPS坐标系统可以有多个版本

  • 国际上通用的是地球坐标 (WGS84),是GPS硬件设备直接取得的坐标。
  • 国内标准是在地球坐标的基础之上加了偏移,称为火星坐标 (GCJ-02)。
  • 国内厂商自己的坐标系,如百度。

使用CLLocationManager取到的坐标是地球坐标,而显示的时候,高德地图以及Apple的MKMapView都使用的是火星坐标。所以解决方案就是获得地球坐标后转换为火星坐标,这样就可以用于在高德地图上展示或不同客户端之间传输了。换句话说,如果想在百度地图上正确显示,有两个选择:第一,使用百度的地图SDK得到GPS坐标,这样直接是百度的坐标系下的经纬度,当然可以正常显示。第二,使用CLLocationManager获取地球坐标后使用百度的坐标转换系统,将地球坐标转换为百度坐标。

iOS转换将地球坐标转换为火星坐标有现成的解决方案,GitHub地址在此。

对了,从今天开始我的博客在博客园csdn同时更新了。

猜你喜欢

转载自blog.csdn.net/zyb050607/article/details/49741809