安卓項目使用了百度地圖的定位SDK,web端使用的也是百度地圖, 后來發現界面顯示百度地圖不如高德效果好,web改用高德地圖,原本的百度地圖坐標是可以直接使用的,由於高德和百度地圖的坐標系不一致 要如何轉換呢。
補充了下坐標系知識后發現高德使用的坐標系是“gcj02”也就是大家所說的“火星坐標”,
百度使用的是“BD09”因為是百度所用大家習慣稱之為“百度坐標” ,如何將bd09轉為gcj02呢,突然想到在百度的定位sdk里有這樣一段說明(來自百度地圖)
設置返回值的坐標類型。 public void setCoorType ( String ) 我們支持返回若干種坐標系,包括國測局坐標系、百度坐標系,需要更多坐標系請聯系我們,需要深度合作。目前這些參數的代碼為。因此需要在請求時指定類型,如果不指定,默認返回百度坐標系。注意當僅輸入IP時,不會返回坐標。目前這些參數的代碼為 返回國測局經緯度坐標系 coor=gcj02 返回百度墨卡托坐標系 coor=bd09 返回百度經緯度坐標系 coor=bd09ll 百度手機地圖對外接口中的坐標系默認是bd09ll,如果配合百度地圖產品的話,需要注意坐標系對應問題。
也就是說百度這個定位sdk應該是可以直接返回gcj02坐標的,這樣就可以直接在高德上使用了
代碼如下
LocationClientOption option = new LocationClientOption(); option.setCoorType("gcj02");//如果是百度坐標參數為 bd0911
看來百度公司對於SDK使用中發現這塊要比高德做的好一些,所以才會出現盡管高德地圖數據不錯但在開發中還是百度地圖摘得頭彩。