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

Rol*_*ndo 1 javascript leaflet

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

var mylocations = [{'id':'A', 'loc':[-21,2]},...,];
Run Code Online (Sandbox Code Playgroud)

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

使用外部库很好.

iH8*_*iH8 7

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);
    }
});
Run Code Online (Sandbox Code Playgroud)