Javascript poly内的传单和Turf.js点
我有一张单张中有17个点(GeoJSON)的简单地图,我使用绘图工具创建了一个多边形,用于选择多边形中的点Javascript poly内的传单和Turf.js点,javascript,leaflet,turfjs,Javascript,Leaflet,Turfjs,我有一张单张中有17个点(GeoJSON)的简单地图,我使用绘图工具创建了一个多边形,用于选择多边形中的点 map.on('draw:created', function (e) { //from draw tool var type = e.layerType, layer = e.layer; editableLayers.addLayer(layer); GetSelection(editableLayers); }); func
map.on('draw:created', function (e) { //from draw tool
var type = e.layerType,
layer = e.layer;
editableLayers.addLayer(layer);
GetSelection(editableLayers);
});
function GetSelection(layer){
var count = allPoints.getLayers().length;
console.log(count +" Sites"); //says 17
var drawList = editableLayers.getLayers().length;
console.log(drawList +" Polys"); //Says 1
if (editableLayers.getLayers().length >0){
var fcpt = turf.featurecollection(allPoints);
console.log(fcpt); // says 17
var fcpoly = turf.featurecollection(editableLayers);
console.log(fcpoly); // fails as undefined
//var ptsWithin = turf.within(fcpt,editableLayers);
var ptsWithin = turf.within(fcpt,fcpoly);
console.log(ptsWithin); //never gets this far.
};
};
有什么想法或建议吗?需要的是一系列GeoJSON功能,而不是像所有点
和可编辑层
变量那样的传单层组
类似地,需要2个GeoJSON功能集合作为参数,而不是传单层组
因此,您可以直接尝试:
var ptsWithin=turp.within(allPoints.toGeoJSON(),editableLayers.toGeoJSON());
@ghybs是对的,这是传单和草皮之间的区别,虽然点没有问题,但多边形没有过来。通过向turf传递GeoJson和多边形信息,使其能够工作
工作副本:
map.on('draw:created', function (e) {
featureGroup.clearLayers();
layer = e.layer;
featureGroup.addLayer(layer);
GetSelection(featureGroup);
});
function GetSelection(layer){
var shape2 = allPoints.toGeoJSON() //All facilities
var ptsWithin = turf.within(shape2, layer.toGeoJSON());
alert('Found ' + ptsWithin.features.length + ' features');
alert("results "+JSON.stringify(ptsWithin));
};
fcpolyn
中的打字错误,应该是fcpoly
?@ghybs,谢谢,我修正了打字错误,但仍然存在同样的问题,功能集没有功能。我没有足够的分数来投票支持你的答案。今天下午我的思路是正确的,但是找不到正确的代码,你有简单的解决方法。谢谢。很高兴与大家分享您的发现和解决方案!:-)