JS: 百度地圖與騰訊/高德地圖經緯度轉換


前言
在開發中使用了第三方的數據,由於經緯度使用的是第三方的數組,他們使用的是百度的地圖坐標。在項目中使用時,能用百度地圖去解析自然是最好的,但是呢,該項目是基於微信小程序的,百度地圖針對小程序提供的API功能不是很完善,難以實現想要的需求,所以采用騰訊官方的地圖。

開始
使用不同的地圖,相應的經緯度會存在些許偏差,騰訊和高德是同一坐標的,可以互用,百度的坐標與兩者稍有不同,使用前,需要先經過換算。

實踐
將騰訊/高德地圖經緯度轉換為百度地圖經緯度

function qqMapTransBMap(lng, lat) {
    let x_pi = 3.14159265358979324 * 3000.0 / 180.0;
    let x = lng;
    let y = lat;
    let z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
    let theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
    let lngs = z * Math.cos(theta) + 0.0065;
    let lats = z * Math.sin(theta) + 0.006;
   
return {
      lng: lngs,
      lat: lats 

}
 將百度地圖經緯度轉換為騰訊/高德地圖經緯度

function bMapTransQQMap(lng, lat) {
    let x_pi = 3.14159265358979324 * 3000.0 / 180.0;
    let x = lng - 0.0065;
    let y = lat - 0.006;
    let z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
    let theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
    let lngs = z * Math.cos(theta);
    let lats = z * Math.sin(theta);
    
return {
      lng: lngs,
      lat: lats     
}  
}
總結
噓寒問暖 不如打筆巨款~


————————————————
版權聲明:本文為CSDN博主「車句」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_39015132/java/article/details/82958562


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM