📜  距离公里 javascript (1)

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

计算两个坐标之间的距离(JavaScript版)

在许多 Web 应用中,我们需要计算两个地点之间的距离。这个距离可以用千米或英里表示,具体取决于我们的需求。JavaScript 是一种常用的编程语言,因此本文将介绍如何使用 JavaScript 计算两个坐标之间的距离。

计算两个坐标之间的距离

假设我们有两个地点的经纬度坐标。我们可以使用 Haversine 公式来计算它们之间的距离,该公式可以计算两个球面上的距离(例如地球)。以下是 Haversine 公式的JavaScript 实现:

function distance(lat1, lon1, lat2, lon2, unit) {
  if ((lat1 == lat2) && (lon1 == lon2)) {
    return 0;
  }
  else {
    var radlat1 = Math.PI * lat1/180;
    var radlat2 = Math.PI * lat2/180;
    var theta = lon1-lon2;
    var radtheta = Math.PI * theta/180;
    var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
    if (dist > 1) {
      dist = 1;
    }
    dist = Math.acos(dist);
    dist = dist * 180/Math.PI;
    dist = dist * 60 * 1.1515;
    if (unit=="K") { dist = dist * 1.609344 }
    if (unit=="N") { dist = dist * 0.8684 }
    return dist;
  }
}

该函数接受五个参数:

  • lat1:第一个地点的纬度;
  • lon1:第一个地点的经度;
  • lat2:第二个地点的纬度;
  • lon2:第二个地点的经度;
  • unit:返回值的单位,可以是米、千米或英里。

这个函数将返回两点之间的距离,单位由 unit 参数指定。

例子

在下面的示例中,我们将使用 (40.6893, -74.0445)(51.509865, -0.118092) 两个地点测试上述函数。前者是纽约市自由女神像的经纬度,后者是伦敦大本钟的经纬度。

console.log(distance(40.6893, -74.0445, 51.509865, -0.118092, "K").toFixed(2) + " km");
console.log(distance(40.6893, -74.0445, 51.509865, -0.118092, "M").toFixed(2) + " miles");

这将输出:

5572.04 km
3461.47 miles
结论

使用 JavaScript,我们可以很容易地计算两点之间的距离,并以千米、米和英里为单位返回结果。如果您有类似的需求,请尝试使用上述函数。