首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤Leaflet中的geojson图层不起作用

问过滤Leaflet中的geojson图层不起作用
EN

Stack Overflow用户
提问于 2016-10-31 23:29:47
回答 2查看 1.4K关注 0票数 1

我在宣传单中有一个geojson层,我希望按年过滤。此geojson图层是使用pointToLayer从geojson文件创建的。

问题是,我不确定这个geoJsonLayer是否是一个数组?我对它的数据结构非常困惑,因此,如何过滤它。当我对它执行console.log操作时,数据是这样嵌套的:

Object { options: Object,_layers: Object,_leaflet_id: 259,_initHooksCalled: true,_map: Object }

点击_layers,我可以得到一个对象列表(这些是我当前在地图上看到的点)。如果我单击其中一个对象,我可以访问一个名为"Feature“的属性,它有一个名为"Properties”的属性,它有一个属性列表:

info_city:密尔沃基

info_count: 1

info_date: 2002

这个名为"info_date“的属性是我要过滤的字段。

我已尝试使用'geoJsonLayers.residents.features.properties‘从geoJsonLayers.residents console.log属性,但未成功

我尝试使用以下方法进行过滤:

代码语言:javascript
复制
function filterByYear(data, year) {
  f = data.filter(function(d) { 
    return d.properties.info_date == year;
  });
  return f;
}


filterByYear(geoJsonLayers.residents, 2009);

问题是,我认为上面的方法适用于数组,但在我将geojson文件转换为geoJsonLayer后,不知何故我的数据似乎不是标准的数组。这也不是一个字符串/数字的问题,因为我已经尝试过这两种方法。

我也尝试了一些类似的方法:

代码语言:javascript
复制
var points = L.geoJson(geoJsonLayers.residents, {
            filter: function(feature, layer) {
                console.log(geoJsonLayers.residents)
                console.log(points)
                return feature.properties.info_date === 2010;
            }
        });

任何帮助都会非常感谢,因为我已经尝试了所有的方法!提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-11-01 00:35:10

尝试像这样的

代码语言:javascript
复制
var arr = [];//this array to hold your filterred object
geoJsonLayers.eachLayer(function(layer){
if(layer.feature.properties.info_date === 2010){
arr.push(layer)
}
})
票数 1
EN

Stack Overflow用户

发布于 2016-11-01 09:58:20

L.geoJSON工厂构建一个Leaflet图层组对象。它绝对不是一个普通的Array。

如果您希望获得该组中的子层的数组,可以使用points.getLayers()。您还可以直接映射它们/在每个子层上应用回调函数,方法是使用points.eachLayer(cb),如Aksav padwal的答案所示。

正如您所注意到的,L.geoJSON工厂自动将GeoJSON数据添加到每个子层的feature成员中。

现在,如果希望过滤子图层,以便可以在地图上显示或不显示它们,则可以根据需要构建任意多个图层组,可能是在L.geoJSON工厂正在分析GeoJSON数据时,以便可以在地图中添加/删除这些图层组。

请参阅:leaflet map, getting specific data of geojson file with button

请注意,L.geoJSON选项filter仅在实例化或添加数据时有效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40345351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档