Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传单图层组控件_Javascript_Jquery_Leaflet - Fatal编程技术网

Javascript 传单图层组控件

Javascript 传单图层组控件,javascript,jquery,leaflet,Javascript,Jquery,Leaflet,我有一系列传单功能组,由一系列GeoJSON层组成。功能组在概念上是相似的,但出于某些控制原因,我需要将它们分开。我还需要能够同时打开和关闭它们。有办法做到这一点吗 我查看了文档,没有找到在打开和关闭FeatureGroup时触发的事件。也没有记录在案的方法将特征组归为某种超组 对于那些想要描绘它的人,以下是工作流程: GeoJSON获取在传单中转换为层的数据。这是不同的行政边界(例如州、县等)。每个图层根据其类型分为不同的功能组(例如,阿肯色州和纽约分为州功能组,福特县和林肯县分为县功能组)。

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

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

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

GeoJSON获取在传单中转换为层的数据。这是不同的行政边界(例如州、县等)。每个图层根据其类型分为不同的功能组(例如,阿肯色州和纽约分为州功能组,福特县和林肯县分为县功能组)。通过这种方式,我可以控制不同功能组的不透明度和样式(例如,当我查看一个州的县时,我可以降低所有其他州的不透明度)。我还需要一种方法来关闭所有这些,然后再打开。传单提供了在FeatureGroup-by-FeatureGroup的基础上实现这一点的功能,但不是一个超级集合

关于如何实现这一点有什么想法吗


问题的新版本:


打开和关闭图层组时触发的事件是什么?还有什么可以连接到它吗?

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

我认为当图层组打开或关闭时,传单当前不提供事件(您正在谈论的是L.控件,对吧?)。我同意这是有用的。现在,您只需扩展代码即可完成需要完成的任何操作。例如:

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建议的主要途径,我使用了它。谢谢。我最终使用了一个空白的LayerGroup和事件“overlayadd”和“overlayremove”,然后从那里手动打开和关闭所有图层。