我有一个包含50个项目的列表:
var mylocations = [{'id':'A', 'loc':[-21,2]},...,];
如何在传单或JavaScript中最有效地使其成为如果我接受特定位置[<longitude>,<latitude>]
的输入,半径(例如50英里)......我可以获得所有{{1那个圈子里面的那个?
使用外部库很好。
答案 0 :(得分:6)
Leaflet的L.LatLng
个对象包含distanceTo
方法:
返回使用Haversine公式计算的给定LatLng的距离(以米为单位)。
http://leafletjs.com/reference.html#latlng-distanceto
var inRange = [], latlng_a = new L.LatLng(0, 0), latlng_b;
locations.forEach(function (location) {
latlng_b_ = new L.LatLng(location.pos[0], location.pos[1]);
if (latlng_a.distanceTo(latlng_b) < 80.4672) {
inRange.push(location);
}
});