最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript如何計(jì)算兩個(gè)地理坐標(biāo)點(diǎn)之間的距離(支持米與公里/千米)

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

一、 前言

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

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

  3. 應(yīng)用哈弗辛公式

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

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

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

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

有毒,解讀后食用

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

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

  // 計(jì)算緯度和經(jīng)度的差值(弧度)
  const a = radLat1 - radLat2;
  const b = rad(lng1) - rad(lng2);

  // 使用哈弗辛公式計(jì)算兩點(diǎn)間的球面距離
  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ù)單位標(biāo)識(shí)返回不同單位和精度的結(jié)果
  if(kilometreFlag) {
    // 返回公里單位,保留1位小數(shù)
    s = s.toFixed(1) + 'km';
  }
  else {
    // 返回米單位,四舍五入取整
    s = Math.round(s * 1000).toFixed(0) + 'm';
  }
  return s;
}

三、使用實(shí)例

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

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

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

總結(jié) 

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

相關(guān)文章

最新評(píng)論

高淳县| 南雄市| 乌鲁木齐县| 奇台县| 丰宁| 麦盖提县| 呼和浩特市| 肇东市| 楚雄市| 开封县| 海林市| 丽水市| 炎陵县| 湖口县| 安溪县| 封开县| 林芝县| 白河县| 页游| 大余县| 沙坪坝区| 搜索| 黔江区| 金溪县| 伊金霍洛旗| 海丰县| 黎川县| 吉木乃县| 夹江县| 无棣县| 平潭县| 离岛区| 东山县| 缙云县| 青河县| 广汉市| 金山区| 营山县| 承德市| 清苑县| 县级市|