Ok, já que eu já fiz uma pergunta muito longa sobre isso, mas como ela não recebeu novas respostas por um tempo e não ficou confusa em detalhes, vou manter essa simples da melhor maneira possível.
Se não me engano, uma setStyle
função para um recurso específico nomeado seria a seguinte:
var bounds = [[54.559322, -5.767822], [56.1210604, -3.021240]];
var rect = L.rectangle(bounds, {color: "#ff7800", weight: 1}).addTo(map);
rect.setStyle({color: "#4B1BDE"});
... que mudaria a cor de laranja para azul. Também estou ciente da resetStyle()
função que reverterá o estilo para o original.
É assim que eu denomino meu GeoJSON:
var everything = L.geoJson(myfile, {
onEachFeature: function(feature){
array_of_layers.addLayer(feature);
},
style: function(feature){
switch(feature.properties.name){
case "belgium": return belgium_style; break;
case "bosnia": return bosnia_style; break;
case "denmark": return denmark_style; break;
case "great_britain": return britain_style; break;
case "greece": return greece_style; break;
case "italy": return italy_style; break;
case "serbia": return serbia_style; break;
case "spain": return spain_style; break;
}
}
});
O que eu quero fazer é tornar apenas um país azul e os outros cinza, posteriormente no código. É uma coisa de duas etapas, pintar todos os países em cinza e depois fazer um azul.
A primeira coisa é que preciso de um loop que itere sobre cada recurso e setStyle()
que todos os países fiquem cinzentos. Funciona se eu apenas everything.setStyle({color: "#4B1BDE"})
ou algo assim?
A segunda coisa é (que está me dando noites sem dormir) como seleciono apenas um recurso de um grupo de polígonos GeoJSON para trabalhar? Apenas o país que eu preciso pintar de azul.
Se fosse uma questão de passar o mouse, eu poderia colocar um ouvinte de evento, como é feito nos tutoriais do Leaflet. Mas, independentemente da interação do usuário, desejo definir e redefinir o estilo chamando-o com seu nome, como fiz no retângulo acima.
setStyle()
função do folheto .