【问题标题】:How to calculate distance in miles in an array of coordinates in javascript? [duplicate]如何在javascript中的坐标数组中计算以英里为单位的距离? [复制]
【发布时间】:2021-07-13 17:16:30
【问题描述】:

我有一个地理坐标数组,如下所示:

const coordinates = [
    { lat: 40.54735374702427, lon: -74.39442702644757 },
    { lat: 40.27735374702427, lon: -74.43442702644757 },
    { lat: 40.19735374202427, lon: -74.84442702644757 }
]

如何获得所有坐标组合的总距离,如下所示: coords[0] - coords[1] 之间的距离添加到 coords[1] - coords[2] 等数组中的所有元素以获得以英里为单位的总距离。我还要考虑地球的曲率。

注意:所有坐标都是为了回答这个问题而编造的。

【问题讨论】:

  • 您要考虑地球的曲率还是只考虑直线距离?

标签: javascript


【解决方案1】:

index.js

function degreesToRadians(degrees) {
    return degrees * Math.PI / 180;
}

function distanceInKmBetweenEarthCoordinates(lat1, lon1, lat2, lon2) {
    var earthRadiusKm = 6371;

    var dLat = degreesToRadians(lat2 - lat1);
    var dLon = degreesToRadians(lon2 - lon1);

    lat1 = degreesToRadians(lat1);
    lat2 = degreesToRadians(lat2);

    var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
        Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    return earthRadiusKm * c;
}



const coordinates = [
    { lat: 40.54735374702427, lon: -74.39442702644757 },
    { lat: 40.27735374702427, lon: -74.43442702644757 },
    { lat: 40.19735374202427, lon: -74.84442702644757 }
];

let totalDistanceInKm = 0;

for (let i = 0; i < coordinates.length - 1; i++) {
    totalDistanceInKm += distanceInKmBetweenEarthCoordinates(coordinates[i].lat, coordinates[i].lon, coordinates[i + 1].lat, coordinates[i + 1].lon);
}

let distanceInMiles = totalDistanceInKm * 0.621371;

console.log(distanceInMiles);

【讨论】:

    猜你喜欢
    • 2010-11-13
    • 2015-02-26
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多