2016-02-29 86 views
1

我在openstreetmap上创建了一个区域(多边形),我想检查当前的lat-long是否在该多边形之内。我正在使用leafletjs。这里是我的链接 - >http://imaker.asia/leaflet/area.htmlopenstreetmap:检查latlong是否在多边形之外(区域)

+2

请在此处添加有意义的代码和问题描述。不要只是链接到需要修复的网站 - 否则,一旦问题解决,这个问题将会给未来的访问者带来任何价值。发布证明你的问题的[mcve]会帮助你得到更好的答案。欲了解更多信息,请参阅[我网站上的某些内容不起作用。我可以只粘贴一个链接吗?](http://meta.stackexchange.com/questions/125997/)谢谢! – Cerbrus

回答

-1

不需要使用任何其他的https://github.com/Leaflet/Leaflet api。只需使用polygon.getBounds()。contains(e.latlng)函数

+0

对不起,解决这个答案的简单性,但是...... polygon.getBounds()给你包含矩形。所以如果你的多边形小于这个矩形(例如它是一个三角形),那么这些边界包含这些点的区域,而不是多边形......为了更加明确,如果多边形是一个圆盘,边界包含4个角包含矩形(在这种情况下为正方形),但显然该磁盘不包含它们。 – ghybs

+0

好吧,让我检查它 – amisha

+0

@ghybs好吧你听起来逻辑上正确。如果该功能在所有情况下都不起作用,那么完美的解决方案是什么? –

1

我认为Leaflet-PIP库(点多边形)应该给你你正在寻找的功能。

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],对单张的通常[Lat, Lng]的相反。

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

0

小册子的选项是Turf.js。它提供了更多的空间功能,但没有与Leaflet紧密集成(需要开发人员直接处理坐标)

相关问题