2015-06-23 134 views
1

我有一个经纬度地址列表,我想按照距离一个地址最近的距离对它们进行排序。谁能帮忙?按纬度和经度最近的距离对地址列表进行排序

+1

所以有两个部分在这里,首先获得的距离从你的“一个地址”的每个地址。然后对它们进行排序。哪一部分特别需要帮助?你的列表中有多少个地址?你的代码到目前为止看起来如何? – duncan

+0

我想按最近的第一个显示餐馆列表。可能有10个或更多地址需要排序。这里是我想要使用的链接:[最佳早午餐](http://bestofthebrunch.co.uk/restaurants/swan-at-the-globe/)。 我遵循http://mobiforge.com/design-development/geo-sorting-using-device-geolocation-to-sort-distance的文档,但未能达到结果。 – PlanetHackers

+0

你的代码到目前为止是什么样的? – duncan

回答

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)calcul

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

不管怎么说,希望这有助于

+0

感谢您的帮助。我使用你的函数来计算距离,并将其作为属性添加到每个元素,然后应用插入排序通过距离属性对它们进行排序。 – PlanetHackers

相关问题