百度地圖開發座標問題總結

PC端使用了百度地圖搜索位置並顯示在地圖上 最後獲取位置的經緯度座標
移動端分別使用了百度地圖獲取實時經緯度 獲取文字地址 定位在地圖上
其中發現不少問題 及時總結下git

座標系種類和使用現狀

當前國內地圖參考系分三種:github

  1. WGS84座標系
    直接從GPS獲取器中取出的原始數據 國際地圖供應商使用的座標系數據庫

  2. GCJ-02火星座標系(國測局座標系)
    中國標準 國行GPS產品獲取到的數據使用的座標 國家規定: 國內出版的各類地圖系統(包括電子形式),必須至少採用GCJ-02對地理位置進行首次加密。瀏覽器

  3. BD-09百度座標系
    百度標準,百度 SDK,百度地圖,Geocoding 使用 原本就亂了,百度又在火星座標上來個二次加密微信

三種參考系的使用狀況:工具

  1. 國外如google地圖 H5瀏覽器使用的都是WGS參考系google

  2. 國內的大多數如 騰訊地圖 高德地圖 iOS地圖(高德地圖) 均是使用的火星座標系加密

  3. 百度獲取地理位置的方法 獲得的座標是百度座標 (百度是基於瀏覽器獲取地理位置方法進行了封裝)spa

三種座標系轉換狀況:3d

  1. 高德地圖提供了WGS轉火星座標的方法

  2. 百度地圖提供了WGS轉百度地圖的方法

  3. 微信獲取地理位置默認WGS 可選擇爲火星座標

三種座標系的數據相對於真實位置對比

真實位置:北京市朝陽區洛娃大廈C座 116.475176 40.018079

地圖上顯示位置:

1.WGS

clipboard.png

以上是WGS真實座標應該在百度地圖上顯示的位置

2.火星座標

若是認爲上述座標爲火星座標時候 將其顯示在百度地圖上 位置則會發生偏移

clipboard.png

3.百度座標

若是又將上訴座標認爲是百度座標時 將其顯示在百度地圖上 位置則有發生偏移

clipboard.png

可見加密過的座標 均相對於真實座標向西南角偏移 直線距離大概一千米

因此 當經過某種獲取地理位的方式獲取到座標 而不知道其實什麼座標系的時候
可用上訴方法找個真實座標對比 快速斷定其座標系
用圖表示

clipboard.png

能夠看到 三種座標系轉換的方法 是不全面的
高德和百度只提供轉到其本身座標系的轉換方法 不支持轉出其餘座標系的方法

如今項目遇到的狀況
數據庫保存的是在PC端設置的 WGS座標
移動端獲取的百度座標系
二者之間進行距離計算 須要轉換

明白了各類獲取位置是什麼座標系的
再明白了各類座標系之間的轉換就容易多了

座標系轉換方法

這裏安利github上一我的作的轉換方法(star 565)
裏面能夠實現各類座標的來回轉換 極大地方便了開發使用
wandergis/coordtransform

另外能夠查看各個座標相對於真實位置的地圖位置工具
在線經緯度查詢

大概就是這樣

相關文章
相關標籤/搜索