如何使用传单/ javascript检查点是否在半径范围内?

时间:2015-11-08 23:53:25

标签: javascript leaflet

我有一个包含50个项目的列表:

var mylocations = [{'id':'A', 'loc':[-21,2]},...,];

如何在传单或JavaScript中最有效地使其成为如果我接受特定位置[<longitude>,<latitude>]的输入,半径(例如50英里)......我可以获得所有{{1那个圈子里面的那个?

使用外部库很好。

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);
    }
});