我有一个纬度和经度的地址列表,我想按最近距离对一个地址进行排序。有人可以帮忙吗?
答案 0 :(得分:4)
让我们说你的地址看起来像这样
{
restaurant: 'Moe\'s la Patate'
longitude: 12345,
latitude: -1234
}
并放置在名为地址
的数组中var addresses = [{
restaurant: 'Moe\'s la Patate'
longitude: 12345,
latitude: -1234
},{
restaurant: 'Mc Donalds'
longitude: -531,
latitude: 235
}// ...
];
并且您的位置采用相同的格式(我将使用位置变量)
你可以做√(a ^ 2 + b ^ 2)计算
var position = {
longitude: 2231,
latitude: -4211
}
var addressesByDistance = addresses.map(function(data){
var distX = position.longitude - data.longitude;
var distY = position.latitude - data.latitude;
var distance = Math.sqrt(Math.pow(distX, 2) + Math.pow(distY, 2));
return distance;
}).sort();
这并没有考虑到地球的四舍五入,但只有10家餐馆,我想他们都在同一个城市?
无论如何,希望它有所帮助