同时设置多个标记的不透明度

use*_*069 2 markers leaflet

我正在为我的项目使用传单,并且我想在其中使用过滤器标记。为此,我会将所有标记的不透明度设置为 0,并将目标的不透明度重新设置为 1。我知道传单允许为每个市场设置不透明度,但我可以同时设置所有标记吗?感谢您的帮助!

csb*_*blo 5

有很多方法可以实现这一目标

在传单中

创建一个图层组并将每个标记添加到该组中:

var myGroup = L.layerGroup([mark1, mark2, ...]);
Run Code Online (Sandbox Code Playgroud)

您可以将整个组添加到地图中。

然后,当您想将标记不透明度设置为 0 时,请执行以下操作:

myGroup.eachLayer(function(layer) {
    layer.setOpacity(0);
});
Run Code Online (Sandbox Code Playgroud)

这里有一个 jsfiddle 的例子:

https://jsfiddle.net/csblo/64phqLb7/4/

在纯 JavaScript 中

将所有标记存储在一个数组中。首先创建一个数组:

var allMarkers = [];
Run Code Online (Sandbox Code Playgroud)

当您创建一个新标记时,将其推送到此数组中:

var marker = L.marker(...);
allMarkers.push(marker);
Run Code Online (Sandbox Code Playgroud)

然后,当您必须将不透明度设置为 0 时:

allMarkers.forEach(function(marker) {
    marker.setOpacity(0);
});
Run Code Online (Sandbox Code Playgroud)