Javascript 获取多边形内的点并对其进行过滤

Javascript 获取多边形内的点并对其进行过滤,javascript,html,leaflet,geojson,shapefile,Javascript,Html,Leaflet,Geojson,Shapefile,我正在尝试对添加到地图中的标记进行排序,根据区域(政府),我将它们作为.zip shapefile,我能够--获取多边形,并使用弹出窗口和所有内容将它们添加到地图中。我一直在尝试做的是测试标记是否在每个多边形内,以便以后可以过滤它们。到目前为止所有的尝试都没有成功。这是完整的代码 #地图{ 身高:100%; 宽度:100%; 保证金:0; 填充:0; } LSAAEQ-事故地图 //创建层 lkj=0; var cities=新的L.LayerGroup(); var mbAttr='地图

我正在尝试对添加到地图中的标记进行排序,根据区域(政府),我将它们作为.zip shapefile,我能够--获取多边形,并使用弹出窗口和所有内容将它们添加到地图中。我一直在尝试做的是测试标记是否在每个多边形内,以便以后可以过滤它们。到目前为止所有的尝试都没有成功。这是完整的代码


#地图{
身高:100%;
宽度:100%;
保证金:0;
填充:0;
}
LSAAEQ-事故地图

//创建层
lkj=0;
var cities=新的L.LayerGroup();
var mbAttr='地图数据和副本;贡献者,'+
', ' +
“图像”,
mbUrl='https://{s}.tiles.mapbox.com/v3/{id}/{z}/{x}/{y}.png';
var灰度=L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?访问令牌={accessToken}',{id:'remotesensing.n8k508ak',属性:mbAttr,accessToken:'pk.eyj1ijoicmvtb3rllxnlbnnpbmchijoiwniyzg0zwu2mjk3ztu5nje4mmqyzwezzty2zwnlyjifq.u7mp4mxdcjaiwwwï})
,街道=L.Tillelayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?访问令牌={accessToken}',{id:'remotesensing.84f6c85a',属性:mbAttr,访问令牌:'pk.eyj1ijoicmvtb3rllxlbnnpbmccilchijoiwynizg0zwu2mjk3ztu5nje4mmqyzwezzty2zwnlyjifq.u7mp4mxdcjaiwwwwï});
//创建图层并将其添加到地图中
var map=L.map('map'{
中间:[33.9,35.877],
缩放:10,
图层:[街道、城市]
});
//指向geojson数据的目录
var dataurl='/reporting/data.geojson';
//从url获取geoJson数据
$.getJSON(数据URL,函数(数据){
var st=JSON.stringify(数据);
shpfile=new L.Shapefile('/resources/LBN_medium.zip'{
onEachFeature:function(feature,layer){layer.bindpoop(“+feature.properties.NAME_1+”
“+feature.properties.NAME_2+”
“+feature.properties.VARNAME_3+”);}); shpfile.addTo(map); 警报(SHP文件); //asd=shpfile.getLayer(20);//此处是您的要素id //警报(asd.feature.properties.NAME_1); //调用函数以创建以字符串形式发送json数据的集群 创建(st、SHP文件); }); 函数创建(geo、SHP文件){ 结果=传单pip.pointInLayer([33.9,35.8],shpfile,true); k=results.toString(); //警报(shpfile.feature.properties.NAME_1); 警报(类型(结果)); 警报(“测试…”); //创建集群对象 var markers=L.layerGroup();//新的L.markerClusterGroup(); var markers2=新的L.markerClusterGroup(); //获取坐标的操作 var-lat=[]; var-lon=[]; var coorM=geo.match(/\d{2}\.\d+\d\d{2}\.\d+/g); var len=库姆长度; var coorA=coorM[0]。拆分(“,”); lon[0]=coorA[0]; lat[0]=coorA[1]; //创建标记 var-mymark=newl.marker([lat[0],lon[0]],{时间:“2015-11-10 08:42:26+01”}); mymark.bindpoop(“意外
这是带有坐标:[“+lat[0]+”,“+lon[0]+”])的1号标记。openPopup(); //添加到标记组 markers.addLayer(mymark); 对于(变量i=1;i这是标记号”+(i+1)+”,坐标为:[“+lat[i]+”,“+lon[i]+”)”)。openPopup(); markers.addLayer(mymark); } //添加图层(标记); layerf=L.特征组(); var mymark=新的L.marker([33.68,35.12],{时间:“2015-11-10 08:42:26+01“}); layerf.addLayer(mymark); var mymark=新的L.marker([35.68,35.53],{时间:“2015-11-10 08:42:26+01“}); layerf.addLayer(mymark); var mymark=新的L.标记([33.9,35.8],{时间:“2015-11-10 08:42:26+01“}); layerf.addLayer(mymark); layert=L.featureGroup(); var mymark=新的L.marker([33.23,35.753],{时间:“2015-11-10 08:42:26+01“}); layert.addLayer(mymark); var mymark=新的L.marker([34.36,35.3575],{时间:“2015-11-10 08:42:26+01”}); layert.addLayer(mymark); var mymark=新的L.marker([33.753,35.29],{时间:“2015-11-10 08:42:26+01”}); layert.addLayer(mymark); 标记2.添加层(layert); 标记2.添加层(layerf); 标记2.添加层(标记); map.addLayer(markers2); } //地图的基本图层 var baseLayers={ “灰度”:灰度, “街道”:街道 };
您可以使用turp.js
turp.inside(point,polygon)
函数测试点是否位于多边形内部。

是的。但是一旦有了L.Marker,就可以调用函数toGeoJSON()来获取GeoJSON表示。链接已断开。这是一个旧的,已修复。