我想对数组进行排序,使每个元素与前一个位置的距离最短。如何根据缩短的距离对数组进行排序Javascript
阵列是这样那样的
locations=[{"loc1",lat,long},{"loc2",lat,long},{"loc3",lat,long},{"loc4",lat,long},{"loc5",lat,long}]
计算距离函数是这样的:
var distance = function(lat1, lon1, lat2, lon2)
{
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);
dist = Math.acos(dist);
dist = dist * 180/Math.PI;
dist = dist * 60 * 1.1515;
dist = dist * 1.609344 ;
return dist;
}
此功能时传递的值提供了两个位置之间的距离。
起点是位置数组 现在我想要一个函数,将采取数组并返回排序的数组。
听起来像旅行商问题https://simple.wikipedia.org/wiki/Travelling_salesman_problem –
你的数组不是对象的一个有效的数组的数组。这不是一个有效的对象:'{“loc1”,lat,long}' – Adam
是的,但我无法在JavaScript中解决这个问题@ ManuAntony @Adam lat和long将是它的位置值只是例子 它将如下所示: {“loc1”,“13.426785”,“44.475847”} –