之前做的項目中需要頻繁向服務(wù)器上傳用戶的坐標,然后由于之前只使用了定位功能祟滴,就直接使用的系統(tǒng)的定位,后來又需要地圖就集成了百度地圖檀蹋,然后自然就需要轉(zhuǎn)換坐標,然后這個時候發(fā)現(xiàn)一個問題轉(zhuǎn)換了之后和直接系統(tǒng)定位的還是對不上内狸,于是就查了下相關(guān)的東西哩掺。
首先說一下坐標系的相關(guān)知識凿叠。
地球坐標(WGS84,國際公認坐標)
火星坐標(GCJ02嚼吞,國家標準盒件,適用于高德地圖)
百度坐標(BD09,百度地圖)
其他...
一般來說有以上三個坐標系
WGS84 看介紹就知道了舱禽,國際公認炒刁。
GCJ02 又是什么鬼呢? 其實這是根據(jù)中國的相關(guān)規(guī)定誊稚,為了安全保密,在國際公認的坐標系上做了一次偏移之后得到的坐標系翔始。
BD09 則是在火星的基礎(chǔ)上再次偏移得到的坐標系罗心。
然而由于蘋果自帶的高德地圖,我也沒深入了解,一直以為使用系統(tǒng)API定位得到的坐標就是火星坐標系的坐標城瞎。于是就一腳踩到坑了去 了渤闷。
其實地圖和定位是兩回事,定位所得的坐標只有和地圖聯(lián)系起來才有意義全谤。這樣說來使用系統(tǒng)定位得到的坐標不經(jīng)轉(zhuǎn)換時沒有任何意義的,因此如果你使用高德地圖,就用高德SDK提供的定位API爷贫,如果是百度就用百度SDK提供的定位API认然,這樣你獲取的坐標才能和地圖上的顯示對的上,否則會有很大的偏差漫萄。
當(dāng)你需要相關(guān)的坐標系的坐標時卷员,網(wǎng)上有相關(guān)的算法進行轉(zhuǎn)換,下面我也貼出了對應(yīng)的地址腾务。
這里還有個驗證的工具坐標檢驗