检查标记在多边形内部

时间:2019-01-26 21:46:10

标签: javascript leaflet

我怎么知道标记是否在几个边缘内?使用https://leafletjs.com/

例如如何检查标记是否类似

L.marker([51.505000, -0.09000]).addTo(mymap);

位于

之类的多边形内
L.polygon([ [51.509, -0.08], [51.503, -0.06], [51.51, -0.047] ,[51.53, -0.047]  ]).addTo(mymap).bindPopup("I am a polygon.");

1 个答案:

答案 0 :(得分:1)

有几种方法。我会选择leaflet-pip,或更通用的方式选择TurfJS's booleanPointInPolygon,例如:

var pt = turf.point([ -0.09000, 51.505]);
var poly = turf.polygon([[
  [ -0.08, 51.509], [-0.06, 51.503], [-0.047, 51.51] ,[-0.047, 51.53]
]]);

if (turf.booleanPointInPolygon(pt, poly)) {
   ...
} else {
   ...
}

请注意,leaflet-pip需要L.GeoJSON的实例,并且TurfJS处理GeoJSON格式的数据。请注意Leaflet's lat-long vs GeoJSON's long-lat

https://leafletjs.com/plugins.html#geoprocessing看,(在撰写本文时)似乎没有实用程序仅对L.MarkerL.Polygon实例进行多边形点计算。 / p>