2017-09-01 60 views
4

我使用小叶画圆的层期间,瓣叶层(所以有几个层,每个包括几个圈)在地图上。添加css类的运行时

我已经保存在featuregroup所有层:

this.globalLayer = L.featureGroup(); 

我通过创建界的新featuregroup,并添加featuregroup到globalLayer添加新的社交圈吧:

let circleLayer: L.featureGroup(); 

let point1 = L.circle([pos_lat, pos_long], {color: color, opacity: 1, 
radius: radius}); 
let point2 = L.circle([pos_lat, pos_long], {color: color, opacity: 1, 
radius: radius}); 
circleLayer.addLayer(point1); 
circleLayer.addLayer(point2); 
// etc. 

this.globalLayer.addLayer(circleLayer); 

现在我想一个CSS类添加到某些层:

for (let cssLayer of cssLayers) { // cssLayers is a L.featureGroup[] 
    this.globalLayer.removeLayer(cssLayer); 
    cssLayer.setStyle({className: 'animate'}); 
    this.globalLayer.addLayer(cssLayer); 
} 

这工程,但由于图层包含很多圈,这需要一段时间来计算。有没有办法只是添加一个CSS类而不删除并再次添加它们?

我已经试过

this.globalLayer.eachLayer(layer => { 
    layer.setStyle({className: 'animate'}) 
}); 

setStyle()在我当前的解决方法解决方案的类型L.Layer

JsFiddle不存在

+2

这是一个非常有趣的问题。我懒得去为它创建一个程序,所以我恳请您创建一个小提琴,所以我可以在你确切的问题发挥。基本上,我们需要能够确定受到类名称影响的标签是什么。举例来说,一个简单的解决办法是无论如何定义一个类为您层(一个或多个),比如myLayer5,然后当你需要做相关的它,你可以document.getElementsByClassName(“myLayer5”)的东西,然后你可以遍历他们并添加/删除类,但保留myLayer5以备将来使用。 –

+0

感谢您的答复,我创建了一个小提琴这里:http://jsfiddle.net/axwL44tm/ – JustYourCasualProgrammer

回答

2

您将需要前一类添加到相应的层你将它添加到其他标签,就像

circleLayer1.setStyle({className: 'myListener'}); 

,然后你可以找到你想要这个类随时随地:

$('#blink').click(function() { 
    $(".myListener").addClass("blink"); 
}); 

Fiddle

+0

这是我落得这样做 – JustYourCasualProgrammer