openstreetmap:检查 latlong 是否在多边形(区域)之外

openstreetmap: check if a latlong is outside polygon(region)

我在 openstreetmap 上创建了一个区域(多边形),我想检查我当前的经纬度是否在该多边形内。我正在使用 leafletjs。这是我的 link -> http://imaker.asia/leaflet/area.html

我认为 Leaflet-PIP 库(Point In Polygon)应该可以为您提供所需的功能。

var gjLayer = L.geoJson(statesData);
var results = leafletPip.pointInLayer([-88, 38], gjLayer);
// results is an array of L.Polygon objects containing that point

然后只需检查您的多边形是否在结果数组中。

请注意,第一个参数可以是 L.LatLng 对象(例如使用 myMarker.getLatLng()),也可以是坐标数组,但 它的顺序必须是 [Lng, Lat],与Leaflet通常的[Lat, Lng].

相反

第二个参数必须是 GeoJSON 图层组。

leaflet-pip 的替代方法是 Turf.js。它提供了更多的空间功能,但与 Leaflet 没有紧密集成(需要开发人员直接处理坐标)

除了 https://github.com/Leaflet/Leaflet api 之外无需使用任何其他内容。只需使用 polygon.getBounds().contains(e.latlng) 函数