Tamam, bu konuyla ilgili çok uzun bir soru sorduğum için, ancak bir süredir yeni bir cevap alamadığı ve ayrıntılarla kafam karıştıramadığı için, bunu en iyi şekilde basit tutacağım.
Yanılmıyorsam, setStyle
adlandırılmış, belirli bir özellik için bir işlev şöyle olacaktır:
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"});
... rengi turuncudan maviye değiştirirdi. Ayrıca resetStyle()
, stili aslına döndürecek olan fonksiyonun da farkındayım .
GeoJSON'uma şu şekilde tarz veriyorum:
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;
}
}
});
Yapmak istediğim, daha sonra kodda sadece bir ülkeyi mavi, diğerini gri yapmak. Tüm ülkeleri griye boyamak ve sonra bir mavi yapmak iki adımlı bir şey.
İlk olarak, her özellik üzerinde ve setStyle()
tüm ülkelerin grileşmesi için yinelenecek bir döngüye ihtiyacım var . Sadece everything.setStyle({color: "#4B1BDE"})
ya da başka bir şey olursa işe yarar mı ?
İkincisi, (bu bana uykusuz geceler veriyor) birlikte çalışacak bir grup GeoJSON poligonundan sadece bir özelliği nasıl seçerim? Sadece maviye boyamam gereken ülke.
Fareyle geziniyor olsaydı, Leaflet derslerinde olduğu gibi bir olay dinleyicisi yerleştirebilirdim. Ancak kullanıcı etkileşimi ne olursa olsun, yukarıdaki dikdörtgende yaptığım gibi, adını ismiyle arayarak stili ayarlamak ve sıfırlamak istiyorum.
setStyle()
işlevini belirttiğiniz için teşekkür ederiz .