0

我有一系列由一系列 GeoJSON 层组成的 Leaflet FeatureGroups。FeatureGroups 在概念上是相似的,但出于某些控制原因,我需要将它们分开。我还需要能够同时打开和关闭它们。有没有办法做到这一点?

我查看了文档,找不到在打开和关闭 FeatureGroup 时触发的事件。也没有记录将 FeatureGroup 归为某种 superGroup 的方法。

对于那些想要描绘它的人,这里是工作流程:

GeoJSON 获取在 Leaflet 中转换为层的数据。这是不同的行政边界(例如州、县等)。每个层根据其类型进入不同的特征组(例如,阿肯色州和纽约进入州特征组,福特和林肯县进入县特征组)。通过这种方式,我可以控制不同 FeatureGroup 的不透明度和样式(例如,当我查看一个州的县时,我可以降低所有其他州的不透明度)。我还需要一种方法来关闭所有这些并重新打开。Leaflet 提供了在 FeatureGroup by FeatureGroup 的基础上执行此操作的能力,但不是超集。

关于如何实现这一目标的任何想法?


新版本的问题:

打开和关闭 LayerGroup 时会触发什么事件?有没有办法与之挂钩?

4

2 回答 2

1

我最终得到了我通常的 LayerGroups 或 FeatureGroups,然后是一个 FeatureGroup,其中包含所有组上的所有图层。因此,当您将形状或图层添加到 FeatureGroup 时,还要将其添加到您用来跟踪所有内容的 FeatureGroup。当然,如果您删除,请不要忘记删除它。您可以将此基础 FeatureGroup 与其他组一起添加到地图中,应该没问题。

于 2013-05-16T07:06:03.600 回答
1

我不认为Leaflet 目前在打开或关闭LayerGroup 时提供事件(您正在谈论L.Control,对吗?)。我同意这将是有用的。现在,你可以扩展代码来做任何你需要做的事情。例如:

var customLayerControl = L.Control.Layer.extend({
  _onInputClick: function(Layer, name){ 
      // This is just like calling super() if this confuses you!
      L.Control.Layers.prototype._onInputClick.call(this,Layer,name);
      // Do stuff
    }
});

然后,不要使用 L.Control.Layers,而是使用您的自定义图层控件:

map.addControl(new customLayerControl({}, {'Custom Layer':customLayer},{}));

我希望这有帮助。

于 2013-06-03T20:48:18.803 回答