1. 程式人生 > >[iOS] 地圖座標的坑

[iOS] 地圖座標的坑

 

 

        最近沒有更新文章,主要是有點忙(lan)。程式中用到了地圖的功能,這個之前做過LBS類的,顯示周邊的興趣點,當時一切正常,忽略了座標這個問題。

        沒時間看的同學可以直接看結論:iOS使用CLLocationManager獲得的是地球座標(WGS84),需要轉換為火星座標(GCJ-02),工具下載地址

問題名稱:地圖座標系問題

表現症狀:iOS使用CLLocationManager獲得位置之後,在地圖上顯示會有漂移,傳送給安卓,顯示也不正常。

原因:GPS座標系統可以有多個版本

  • 國際上通用的是地球座標 (WGS84),是GPS硬體裝置直接取得的座標。
  • 國內標準是在地球座標的基礎之上加了偏移,稱為火星座標 (GCJ-02)。
  • 國內廠商自己的座標系,如百度。

使用CLLocationManager取到的座標是地球座標,而顯示的時候,高德地圖以及Apple的MKMapView都使用的是火星座標。所以解決方案就是獲得地球座標後轉換為火星座標,這樣就可以用於在高德地圖上展示或不同客戶端之間傳輸了。換句話說,如果想在百度地圖上正確顯示,有兩個選擇:第一,使用百度的地圖SDK得到GPS座標,這樣直接是百度的座標系下的經緯度,當然可以正常顯示。第二,使用CLLocationManager獲取地球座標後使用

百度的座標轉換系統,將地球座標轉換為百度座標。

iOS轉換將地球座標轉換為火星座標有現成的解決方案,GitHub地址在此。

對了,從今天開始我的部落格在部落格園csdn同時更新了。