传单layerGroup控件

Leaflet layerGroup controls

本文关键字:控件 layerGroup 传单      更新时间:2023-09-26

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

我看了文档,找不到当FeatureGroup打开和关闭时触发的事件。也没有文档说明如何将FeatureGroups集中到某种superGroup中。

对于那些想要想象它的人来说,这里是工作流程:

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

对如何实现这一点有什么想法吗?


问题的新版本:

打开和关闭LayerGroup时触发的事件是什么?有什么办法可以钩住它吗?

我最终得到了我通常的LayerGroups或FeatureGroups,然后是一个包含所有组上所有图层的FeatureGroup。所以当你添加一个形状或图层到一个FeatureGroup时,也要将它添加到你用来跟踪所有内容的FeatureGroup。当然,如果你要移除,别忘了移除它。您可以将这个基本的FeatureGroup与其他组一起添加到映射中,应该没问题。

我不认为传单目前提供一个事件,当一个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控件。图层,使用自定义图层控件:

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

我希望这对你有帮助。