Javascript 获取多边形内的点并对其进行过滤
我正在尝试对添加到地图中的标记进行排序,根据区域(政府),我将它们作为.zip shapefile,我能够--获取多边形,并使用弹出窗口和所有内容将它们添加到地图中。我一直在尝试做的是测试标记是否在每个多边形内,以便以后可以过滤它们。到目前为止所有的尝试都没有成功。这是完整的代码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='地图
#地图{
身高: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.jsturp.inside(point,polygon)
函数测试点是否位于多边形内部。是的。但是一旦有了L.Marker,就可以调用函数toGeoJSON()来获取GeoJSON表示。链接已断开。这是一个旧的,已修复。