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) 函数
我在 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) 函数