溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何調用百度地圖API實現(xiàn)坐標轉換

發(fā)布時間:2021-12-30 10:54:59 來源:億速云 閱讀:217 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要介紹了如何調用百度地圖API實現(xiàn)坐標轉換,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。


 Python代碼

因為不同的地圖使用的經緯度坐標系不同(如百度地圖使用的是百度坐標,高德、谷歌等使用的是GCJ-02坐標),所以在實際應用中需要進行不同坐標的轉化,不然將百度經緯度的點畫在高德地圖上,會出現(xiàn)位置偏移。

實現(xiàn)百度坐標向高德坐標轉化有兩種方法,一種就像調用百度地圖API一樣,調用高德API接口實現(xiàn)坐標變換,另一種可以直接通過計算實現(xiàn)轉化。

  • 調用高德API接口

高德開放平臺為https://lbs.amap.com/api/webservice/summary,與調用百度API一樣,用戶要先申請自己的ak并作為必填參數(shù)進行傳入才能完成調用。
#通過web api 將百度經緯度轉換為高德經緯度def getGCJ02(lng,lat):    url = 'https://restapi.amap.com/v3/assistant/coordinate/convert?coordsys=baidu&output=json&key='    ak = '你的ak'    #生成完整url    uri = url +  ak + '&locations=' + str(lng) + ',' + str(lat)    html = requests.get(uri)#獲取網頁內容    bs_getDetail = BeautifulSoup(html.text,'lxml')  #解析網頁      #找到存放經緯度數(shù)據(jù)的文字,轉換為字典,取得相應經緯度    location = eval(bs_getDetail.p.text)["locations"]    return location
  • 直接計算

也可以通過直接計算得到相關結果,這里注意要提前加載math庫。

#通過計算將百度經緯度轉換為高德經緯度def getGCJ02_2(lng, lat):    PI = math.pi  * 3000.0 / 180.0;    x = lng - 0.0065;    y = lat - 0.006;    z = math.sqrt(x * x + y * y) - 0.00002 * math.sin(y * PI);    theta = math.atan2(y, x) - 0.000003 * math.cos(x * PI);    gg_lng = z * math.cos(theta);    gg_lat = z * math.sin(theta);    return str(list([gg_lng, gg_lat]))
最終的結果如下,前面為百度經緯度坐標,后面為轉換后的高德經緯度坐標:
[120.30092835093511, 30.429908332211145]->[120.2943448753952, 30.424254963690057]

感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何調用百度地圖API實現(xiàn)坐標轉換”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

api
AI