📌  相关文章
📜  如何用纬度和经度计算近似距离 - Javascript(1)

📅  最后修改于: 2023-12-03 15:38:51.858000             🧑  作者: Mango

如何用纬度和经度计算近似距离 - Javascript

在开发中,我们经常需要计算两个地点之间的距离。但是,JavaScript 中没有内置的距离计算函数。幸运的是,我们可以使用经纬度来近似计算两个地点之间的距离。

定义

纬度和经度是地球表面上点的坐标。

公式

下面是用于计算两个地点之间距离的 Haversine 公式:

d = 2r * arcsin(sqrt((sin((lat2 - lat1) / 2))^2 + cos(lat1) * cos(lat2) * (sin((lon2 - lon1) / 2))^2))

其中:

  • d 为两个地点之间的距离(单位:公里)
  • r 为地球半径
  • lat1lon1 为第一个地点的纬度和经度
  • lat2lon2 为第二个地点的纬度和经度
实现

我们可以在 JavaScript 中使用这个公式来计算两个地点之间的距离。以下是使用 Haversine 公式计算距离的 JavaScript 实现:

function getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2) {
  const earthRadius = 6371; // 地球半径(单位:公里)

  const dLat = deg2rad(lat2 - lat1);
  const dLon = deg2rad(lon2 - lon1);

  const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
          Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
          Math.sin(dLon / 2) * Math.sin(dLon / 2);

  const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));

  const d = earthRadius * c;
  return d.toFixed(2); // 保留两位小数
}

function deg2rad(deg) {
  return deg * (Math.PI / 180);
}
使用

调用 getDistanceFromLatLonInKm 函数,来计算两个地点之间的距离。

const distance = getDistanceFromLatLonInKm(31.22, 121.48, 30.67, 104.06);
console.log(distance); // 1912.44 km
结论

使用纬度和经度近似计算两个地点之间的距离是一种简单而实用的方法,但是计算结果并不能完全准确反映真实的地理距离。