Javascript 传单:更新GeoJson过滤器?

Javascript 传单:更新GeoJson过滤器?,javascript,leaflet,geojson,Javascript,Leaflet,Geojson,我想用数据填充GeoJson层,然后动态过滤要显示的功能 我已经得到了过滤器功能的工作,但我不知道如何改变过滤器,然后刷新层 在添加数据后,有什么方法可以更新过滤器吗?在addData方法中,第一个检查是数据是否是要素的集合,在这种情况下,会为每个要素调用该方法 然后按如下方式应用过滤器: var options = this.options; if (options.filter && !options.filter(geojson)) { return; } 因此,如果在添

我想用数据填充GeoJson层,然后动态过滤要显示的功能

我已经得到了过滤器功能的工作,但我不知道如何改变过滤器,然后刷新层

在添加数据后,有什么方法可以更新过滤器吗?

addData
方法中,第一个检查是数据是否是要素的集合,在这种情况下,会为每个要素调用该方法

然后按如下方式应用过滤器:

var options = this.options;
if (options.filter && !options.filter(geojson)) { return; }
因此,如果在添加数据时过滤器过滤掉数据,则不会在任何地方存储或记忆数据。更改过滤器不会使数据突然重新出现


您可以保留对geojson的引用,并在更改过滤器时重新初始化层。

我是通过根据功能的属性将每个功能类型添加到不同的属性来实现的。e、 g

GeoJSON

var data =[
  {
   type: "Feature",
   properties: {
      type: "type1"
   },
   geometry: {
      type: "Point",
      coordinates: [-1.252,52.107]
   }
  },
  {
   type: "Feature",
   properties: {
      type: "type2"
   },
   geometry: {
      type: "Point",
      coordinates: [-2.252,54.107]
   }
  }
];
创建图层

然后您可以调用传单功能,例如

//Show layerGroup with feature of "type1"
showLayer("type1");

/*
* show/hide layerGroup   
*/
function showLayer(id) {
    var lg = mapLayerGroups[id];
    map.addLayer(lg);   
}
function hideLayer(id) {
    var lg = mapLayerGroups[id];
    map.removeLayer(lg);   
}

请参见下面的示例,您有一个映射和一个myBus层

map.removeLayer(myBus);

...add your data edit something ...

myBus.addTo(map);

谢谢,重新初始化层是否意味着添加层/移除层?我想您也可以调用
initialize(newgeojson,options)
,但我还没有尝试过。删除和添加肯定有效。实际上
map.removeLayer(gj)
然后
map.addLayer(gj)
不起作用。从文档->注意:动态更改过滤器选项仅对新添加的数据有效。它不会重新评估已包含的功能。如何更改每个图层组的标记图标?
map.removeLayer(myBus);

...add your data edit something ...

myBus.addTo(map);