D'accord, puisque j'ai déjà posé une très longue question à ce sujet, mais comme il n'a pas reçu de nouvelles réponses pendant un certain temps, et pour ne pas être confus dans les détails, je vais garder celle-ci simple du mieux que je peux.
Si je ne me trompe pas, une setStyle
fonction pour une caractéristique nommée particulière serait la suivante:
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"});
... ce qui changerait la couleur de l'orange au bleu. Je connais également la resetStyle()
fonction qui ramènera le style à l'original.
Voici comment je stylise mon 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;
}
}
});
Ce que je veux faire, c'est rendre un seul pays bleu et les autres gris, plus loin dans le code. C'est une chose en deux étapes, pour peindre tous les pays en gris, puis en faire un bleu.
La première chose est que j'ai besoin d'une telle boucle qui itérerait sur chaque fonctionnalité et griserait setStyle()
pour tous les pays. Est-ce que ça marche si je viens everything.setStyle({color: "#4B1BDE"})
ou quelque chose?
La deuxième chose est, (cela me donne des nuits blanches) comment puis-je sélectionner une seule entité dans un groupe de polygones GeoJSON avec laquelle travailler? Juste le pays que j'ai besoin de peindre en bleu.
S'il s'agissait de survoler la souris, je pourrais placer un écouteur d'événement comme cela est fait dans les tutoriels Leaflet. Mais quelle que soit l'interaction de l'utilisateur, je veux définir et réinitialiser le style en l'appelant avec son nom, comme je l'ai fait avec le rectangle ci-dessus.
setStyle()
fonction du dépliant .