我希望按年份过滤传单中的 geojson 层。此 geojson 层是使用 pointToLayer 从 geojson 文件创建的。
问题是,我不确定这个geoJsonLayer是不是一个数组?我对它的数据结构以及如何过滤它感到非常困惑。当我 console.log
它,数据是这样嵌套的:
Object { options: Object, _layers: Object, _leaflet_id: 259, _initHooksCalled: true, _map: Object }
单击 _layers,我可以获得对象列表(这些是我当前在 map 上看到的显示点)。如果我单击其中一个对象,我就可以访问一个名为“Feature”的属性,它有一个名为“Properties”的属性,其中有一个属性列表:
info_city: Milwaukee
info_count: 1
info_date: 2002
这个名为“info_date”的属性是我要过滤的字段。
我尝试失败了 console.log
来自 geoJsonLayers.residents
的属性使用 geoJsonLayers.residents.features.properties
.
我尝试使用以下方式进行过滤:
function filterByYear(data, year) {
f = data.filter(function(d) {
return d.properties.info_date == year;
});
return f;
}
filterByYear(geoJsonLayers.residents, 2009);
问题是我认为上述方法适用于数组,但是一旦我将 geojson 文件转换为 geoJsonLayer,我的数据似乎就不是标准数组了。这也不是字符串/数字问题,因为我已经尝试了这两种选择。
我还尝试了一些类似的方法:
var points = L.geoJson(geoJsonLayers.residents, {
filter: function(feature, layer) {
console.log(geoJsonLayers.residents)
console.log(points)
return feature.properties.info_date === 2010;
}
});
最佳答案
尝试这样的事情
var arr = [];//this array to hold your filterred object
geoJsonLayers.eachLayer(function(layer){
if(layer.feature.properties.info_date === 2010){
arr.push(layer)
}
})
关于javascript - 过滤 Leaflet 中的 geojson 层不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40345351/