JavaScript根據經緯度獲取距離信息


最近開發微信小程序,遇到了外賣配送半徑的問題,在網上查閱了諸多資料,也大概理解了經緯度距離計算的公式原理,在此做下筆記,方便自己和大家學習使用。

若是把地球當作一個正常的球體(其實它是橢球)來說,球面兩點之間的距離計算並不復雜,運用球坐標很容易就能計算出兩點之間的弧長。

親測有效的代碼,原理就不詳細講了,列一大堆公式對急需使用的開發者也沒太大幫助,網上一大堆,直接上代碼好了。

//經緯度轉換成三角函數中度分表形式。
function rad(d) {
  return d * Math.PI / 180.0;
}

/**
 *
 * @param lat1  緯度1
 * @param lng1  經度1
 * @param lat2  緯度2
 * @param lng2  經度2
 */
function geoDistance(lat1, lng1, lat2, lng2) {
  let radLat1 = rad(lat1);
  let radLat2 = rad(lat2);
  let a = radLat1 - radLat2;
  let b = rad(lng1) - rad(lng2);
  let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
  s = s * 6378.137;// EARTH_RADIUS;
  s = Math.round(s * 10000) / 10000; //輸出為公里
  return s;
}

如果其他編程語言需要使用,只需替換相關的數學函數調試一下即可。


免責聲明!

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



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