📜  经纬度到最短距离 - Javascript (1)

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

经纬度到最短距离 - Javascript

在计算机世界中,我们经常需要计算地球上两点之间的最短距离。这个问题在地图应用中尤为常见。本文将介绍使用Javascript计算经纬度之间最短距离的方法。

具体算法

我们可以使用半正矢公式来计算两点之间的最短距离。该公式基于地球的半径和两点之间的经纬度。

const EARTH_RADIUS = 6371; // 地球半径,单位为千米

function getDistance(lat1, lng1, lat2, lng2) {
    let radLat1 = (lat1 * Math.PI) / 180;
    let radLat2 = (lat2 * Math.PI) / 180;
    let a = radLat1 - radLat2;
    let b = (lng1 * Math.PI) / 180 - (lng2 * Math.PI) / 180;
    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 * EARTH_RADIUS;
    return s.toFixed(2);
}

以上代码中,getDistance函数使用了原始的JavaScript数学函数来计算从第一个经纬度到第二个经纬度的距离。该函数接受四个参数:第一个点的纬度,第一个点的经度,第二个点的纬度和第二个点的经度。该函数返回两个点之间的距离,单位为千米,保留两位小数。

使用示例
let distance = getDistance(39.908718, 116.397488, 31.21524, 121.420033);
console.log(distance); // 输出:1038.01

以上代码中将北京和上海两个城市的经纬度传递给了getDistance函数,并将返回值存储在distance变量中。console.log语句将输出两个城市之间的距离,即1038.01千米。

结论

半正矢公式是一个简单而强大的用于计算两点之间最短距离的方法。通过将该公式与JavaScript的数学函数相结合,我们可以轻松地实现地图应用中的距离计算。请记住,在使用此方法时,您应该使用千米为单位来表示距离。