按纬度和经度的最近距离对地址列表进行排序

时间:2015-06-23 11:29:53

标签: jquery google-maps

我有一个纬度和经度的地址列表,我想按最近距离对一个地址进行排序。有人可以帮忙吗?

1 个答案:

答案 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家餐馆,我想他们都在同一个城市?

无论如何,希望它有所帮助