首页 > 解决方案 > How to use loop for retrieve distance between multiple coordinates from array?

问题描述

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;
    }
}
console.log(distance(lat1, lon1, lat2, lon2, "K")); 

My array: [0 … 99] 0: {provider: "fused", locationProvider: 1, time: 1582829443960, latitude: 45.9605221, longitude: 13.6437692, …} 1: {provider: "fused", locationProvider: 1, time: 1582829453971, latitude: 45.9605234, longitude: 13.6437679, …} 2: {provider: "fused", locationProvider: 1, time: 1582829472537, latitude: 45.9605234, longitude: 13.6437679, …} 3: {provider: "fused", locationProvider: 1, time: 1582829502534, latitude: 45.960517, longitude: 13.6437747, …} 4: {provider: "fused", locationProvider: 1, time: 1582829503566, latitude: 45.960517, longitude: 13.6437747, …} 5: {provider: "fused", locationProvider: 1, time: 1582829893219, latitude: 45.9605249, longitude:

I need to get first distance between first two different coordinates, then from second and calculate how much calculate has each coordinate.

    var distanceChange = currentUpdate.deltaDistMetres;
    distanceTotal += distanceChange;

    $("#test").html("Total distance " + distanceChange + " m");

标签: javascriptjqueryarrays

解决方案


最简单的方法是用循环循环数组for

var result = []
for (var i=0;i<array.length-1;i++){
    result.push(distance(array[i].latitude, array[i].longitude,distance(array[i+1].latitude, 
    array[i+1].longitude,"K"));
}
console.log(result);

推荐阅读