【问题标题】:Leaflet layerGroup controls传单层组控件
【发布时间】:2013-06-04 04:48:18
【问题描述】:

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

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

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

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

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


新版问题:

打开和关闭 LayerGroup 时会触发什么事件?反正有什么办法吗?

【问题讨论】:

    标签: javascript jquery leaflet


    【解决方案1】:

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

    【讨论】:

    • 谢谢。我最终使用了一个空白的 LayerGroup 和事件“overlayadd”和“overlayremove”,然后从那里手动打开和关闭所有图层。
    【解决方案2】:

    我不认为 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},{}));
    

    我希望这会有所帮助。

    【讨论】:

    • 这很有帮助,但由于我已经对@gibbocool 的建议采取了大部分措施,所以我使用了它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多