欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript如何計算兩個地理坐標點之間的距離(支持米與公里/千米)

 更新時間:2025年07月22日 09:15:41   作者:加油樂  
在現(xiàn)代的Web開發(fā)中,計算兩個坐標間的距離是一項常見的需求,下面這篇文章主要介紹了JavaScript如何計算兩個地理坐標點之間的距離(支持米與公里/千米)的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

一、 前言

  1. 角度轉弧度:將經(jīng)緯度從角度轉換為弧度

  2. 計算差值:計算兩點間的緯度和經(jīng)度差

  3. 應用哈弗辛公式

    • sin²(Δlat/2) + cos(lat1) * cos(lat2) * sin²(Δlng/2)
    • 計算兩點間的中心角
  4. 計算弧長2 * R * arcsin(√上述結果)

  5. 單位轉換:根據(jù)參數(shù)返回公里或米單位

二、 代碼注釋及參數(shù)詳解

注意:使用經(jīng)緯度WGS84、GCJ-02、BD-09等類型,前后參數(shù)需對應類型,否則存在偏差

有毒,解讀后食用

/**
 * @param {number} lat1 - 第一個點的緯度
 * @param {number} lng1 - 第一個點的經(jīng)度
 * @param {number} lat2 - 第二個點的緯度
 * @param {number} lng2 - 第二個點的經(jīng)度
 * @param {boolean} kilometreFlag - 單位標志:true返回公里(km)并保留1位小數(shù),false返回米(m)并取整
 * @returns {string} 兩點間的距離字符串(帶單位)
 */
function getDistance(lat1, lng1, lat2, lng2, kilometreFlag = false) {
window.location.
  // 將角度轉換為弧度
  function rad(d) {
    return d * Math.PI / 180;
  }

  // 將經(jīng)緯度從角度轉換為弧度
  const radLat1 = rad(lat1);
  const radLat2 = rad(lat2);

  // 計算緯度和經(jīng)度的差值(弧度)
  const a = radLat1 - radLat2;
  const 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)
    )
  );

  // 乘以地球半徑(6378.137公里)得到距離(公里)
  s = s * 6378.137;

  // 根據(jù)單位標識返回不同單位和精度的結果
  if(kilometreFlag) {
    // 返回公里單位,保留1位小數(shù)
    s = s.toFixed(1) + 'km';
  }
  else {
    // 返回米單位,四舍五入取整
    s = Math.round(s * 1000).toFixed(0) + 'm';
  }
  return s;
}

三、使用實例

// 示例1:計算兩個近距離點(約500米)
const dist1 = getDistance(39.915, 116.404, 39.918, 116.408);
console.log(dist1); // 輸出類似 "478m"

// 示例2:計算兩個遠距離點(約1064公里) 北京-上海
const dist2 = getDistance(39.906217, 116.3912757, 31.2513263, 121.3912291, true);
console.log(dist2); // 輸出類似 "1064.0km"

// 示例3:使用默認單位(米)北京-上海
const dist3 = getDistance(39.906217, 116.3912757, 31.2513263, 121.3912291);
console.log(dist3); // 輸出類似 "1064022m"

總結 

到此這篇關于JavaScript如何計算兩個地理坐標點之間的距離(支持米與公里/千米)的文章就介紹到這了,更多相關JS計算兩個地理坐標點距離內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論