地圖坐標(biāo)轉(zhuǎn)換(騰訊地圖←→百度地圖),利用算法&國外的地圖

工作難免會接觸到地圖,然后又會接觸到同一個經(jīng)緯度,不同地圖之間會產(chǎn)生偏差的問題

PS:國內(nèi)的地圖可以直接使用地圖官方的api或者gpsspg的api進(jìn)行轉(zhuǎn)換,大概是要比網(wǎng)上的算法要準(zhǔn)的,我下面要說的是百度地圖獲取的國外經(jīng)緯度用算法轉(zhuǎn)換成騰訊的經(jīng)緯度,也就是GCJ-02的經(jīng)緯度。


說到不同地圖經(jīng)緯度不通用的原因,網(wǎng)上一搜一大把,而且講的也很高大上,這里就隨便說說:

WGS-84原始坐標(biāo)系,是國際通用的GPS的一個坐標(biāo)系

大致是國內(nèi)不能用正確的經(jīng)緯度,用的是被稱為 GCJ-02 (火星坐標(biāo)系)的東東,這也是騰訊,高德谷歌國內(nèi)用的一個坐標(biāo)系

百度則自己搞了一套, 在GCJ-02的坐標(biāo)系上進(jìn)行加密所使用的一種坐標(biāo)系 bd-09

可以簡單的理解為?:

? ?? ?WGS-84(原始坐標(biāo)系) :國外使用的坐標(biāo)系

? ? ? GCJ-02?(火星坐標(biāo)系) :國內(nèi)大部分地圖所使用的坐標(biāo)系

? ??? BD-09?(百度坐標(biāo)系) :百度使用的坐標(biāo)系

這里不討論什么?投影坐標(biāo)系統(tǒng)??或者?地理坐標(biāo)系統(tǒng)??什么的,有興趣的可以自行百度,我反正是弄不太懂的了

那么海外版的騰訊地圖國內(nèi)版的騰訊地圖有什么區(qū)別呢?百度地圖又是怎樣的呢?

我的理解(猜測)為:騰訊地圖在國內(nèi)的時候,自動使用GCJ-02(火星坐標(biāo)系),到了國外,則用的是WGS-84的坐標(biāo)系;因?yàn)橛抿v訊地圖的api經(jīng)緯度轉(zhuǎn)換的時候,你會發(fā)現(xiàn)在國外的經(jīng)緯度是原樣返回的。也就是說,國外的經(jīng)緯度并不需要轉(zhuǎn)換。

那么百度地圖就好玩了,國內(nèi)用的是BD-09的坐標(biāo)系,然而到了國外……用的貌似還是BD-09的坐標(biāo)系。不信的同學(xué)可以用百度地圖獲取一組國外的經(jīng)緯度,然后打開gpsspg的網(wǎng)站,輸入以后,你會發(fā)現(xiàn)同一組經(jīng)緯度,百度地圖和谷歌地圖顯示的位置是有偏差的。而如果你能打開騰訊的地圖的話,你會發(fā)現(xiàn)騰訊地圖顯示的坐標(biāo)和谷歌顯示的坐標(biāo)是一樣的。

結(jié)論:

騰訊地圖在國內(nèi)用的是GCJ-02的坐標(biāo)系,國外則是WGS-84的坐標(biāo)系。

百度地圖不管是海外還是國內(nèi),用的都是BD-09的坐標(biāo)系


然后上主菜,利用算法去將百度獲取到的BD-09國外經(jīng)緯度轉(zhuǎn)化為騰訊地圖國外WGS-84的經(jīng)緯度

ps:算法來自以下網(wǎng)站:https://www.oschina.net/code/snippet_260395_39205,圖片就不截了,有點(diǎn)長。

先將獲取的BD-09百度經(jīng)緯度轉(zhuǎn)換為GCJ-02火星坐標(biāo)系的經(jīng)緯度,方法 bd_decrypt($bdLat, $bdLon);

然后將得出來的GCJ-02 火星坐標(biāo)系經(jīng)緯度轉(zhuǎn)換為 WGS-84的經(jīng)緯度,方法 gcj_decrypt_exact($gcjLat, $gcjLon);


以上。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容