分享的山 換個地圖開啟成了海

xiaxveliang發表於2021-04-02

Android開發中,偶然發現,用百度地圖分享出來的經緯度資訊,再次用高德地圖、騰訊地圖開啟,會出現幾百米甚至幾公里的偏移。借用網路相關評論 分享出來的明明是山,換個地圖開啟變成海了

一、現象

開啟百度地圖:在地圖上選擇一個地點,檢視其經緯度座標。
這裡以我的老東家 網易北京研發中心為例。
開啟百度地圖座標拾取系統,搜尋框輸入 網易北京研發中心,獲取經緯度座標為:116.282314,40.049229

百度地圖:網易北京研發中心在百度地圖上的經緯度

開啟高德地圖,高德地圖逆地理編碼系統。
百度地圖座標拾取的經緯度資訊填入高德地圖逆地理編碼系統中,如下圖所示,可以看到定位地址大約出現了一公里的偏移

高德地圖:百度地圖座標拾取的經緯度資訊 填入 高德地圖逆地理編碼系統

開啟騰訊地圖,騰訊位置服務系統。
百度地圖座標拾取的經緯度資訊填入騰訊位置服務系統中,如下圖所示,可以看到定位地址同樣出現了大約一公里的偏移,但騰訊地圖、高德地圖最終的定位位置保持一致

騰訊地圖:百度地圖座標拾取的經緯度資訊 填入 騰訊位置服務系統

高德地圖座標拾取器
https://lbs.amap.com/demo/javascript-api/example/geocoder/regeocoding

百度地圖座標拾取器
http://api.map.baidu.com/lbsapi/getpoint/index.html

騰訊地圖座標拾取器
https://lbs.qq.com/getPoint/

猜想:

現象:
百度地圖分享出來的經緯度資訊,用高德地圖、騰訊地圖開啟出現了相同的偏移量;但高德地圖、騰訊地圖分享出來的經緯度資訊,兩者之前可以互相使用。

這裡猜測:
高德、騰訊地圖應該使用了同一套座標系統;百度地圖可能在該地圖的基礎上,使用了一套新的座標系統,對座標系主動進行了某種偏移操作。

二、座標系

分別查詢高德地圖、騰訊地圖、百度地圖三家的開發者平臺,發現:
高德地圖、騰訊地圖採用的是 GCJ02 座標系百度地圖採用了 BD09 座標系

那麼 GCJ02、BD09 座標系有什麼區別?

想要了解 GCJ02、BD09 座標系的區別,先了解一下國內主流的座標系型別。
目前國內主流的座標系型別有 WGS84、GCJ02、BD09

  • WGS84
    世界大地測量系統(World Geodetic System 1984)是一種用於地圖學、大地測量學和導航(GPS全球定位系統)的大地測量系統標準。
  • GCJ02
    中國國家測量局02號標準(Guojia Cehui Ju 02),也稱為火星座標系。是中國國家測繪局制訂的地理資訊系統的座標系統,是在 WGS84 經緯度的基礎上執行加密演算法而成。因GPS得到的經緯度直接在 GCJ02 座標系下會定位到錯誤的地點,有種到了火星的感覺,因此在坊間也將 GCJ02 戲稱為火星座標系
  • BD09
    百度座標系,百度在GCJ02座標系基礎上再次加密而成

國內主流地圖預設採用的座標系?

瞭解了各座標系的大概定義,那麼目前國內主流的地圖都預設採用了什麼座標系統呢?

地圖 大陸、港澳 臺灣省 海外
百度 BD-09 WGS84 WGS84
高德 GCJ-02 WGS84 WGS84
騰訊 GCJ-02 WGS84 WGS84

總結一句話:

中國大陸、港澳,使用GCJ02座標系(百度除外,百度預設使用 BD09 座標系);台灣省使用 WGS84 座標系;海外地區使用 BD09 座標系

以上表格資料依據:

百度地圖資料依據
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/coordtrans

百度地圖資料依據

高德地圖資料依據
https://lbs.amap.com/faq/advisory/others/39840/?wd=WGS84&cateId=&page=&detail=true

高德地圖資料依據

高德地圖資料依據

騰訊地圖資料依據
https://lbs.qq.com/mobile/androidMapSDK/developerGuide/attention

騰訊地圖資料依據

騰訊地圖資料依據

三、座標系轉換

檢視百度、高德、騰訊相關開發者平臺,發現對應開發者平臺均提供了GCJ02、BD09、WGS84相關的座標系轉化API。

百度地圖

百度地圖 座標轉化API:
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/coordtrans

百度地圖 座標轉化API

高德地圖

高德地圖 座標轉化API:
https://lbs.amap.com/api/android-sdk/guide/computing-equipment/coordinate-transformation/

高德地圖 座標轉化API

=== THE END ===

歡迎關注我的公眾號

相關文章