您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何調用百度地圖API實現(xiàn)坐標轉換,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Python代碼
因為不同的地圖使用的經緯度坐標系不同(如百度地圖使用的是百度坐標,高德、谷歌等使用的是GCJ-02坐標),所以在實際應用中需要進行不同坐標的轉化,不然將百度經緯度的點畫在高德地圖上,會出現(xiàn)位置偏移。
實現(xiàn)百度坐標向高德坐標轉化有兩種方法,一種就像調用百度地圖API一樣,調用高德API接口實現(xiàn)坐標變換,另一種可以直接通過計算實現(xiàn)轉化。
調用高德API接口
#通過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è)資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。