Гаразд, оскільки я вже задавав дуже довге запитання з цього приводу, але оскільки на якийсь час не отримував жодних нових відповідей і не плутатись у деталях, я зроблю цю просту найкращим способом.
Якщо я не помиляюся, setStyle
функцією для названої конкретної функції буде така:
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"});
... що змінило б колір від оранжевого до синього. Я також знаю про resetStyle()
функцію, яка поверне стиль до оригіналу.
Ось так я стилю свій 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;
}
}
});
Що я хочу зробити, це зробити лише одну країну блакитною, а інші сірою, пізніше в коді. Це двоетапна річ - пофарбувати всі країни в сірий колір, а потім зробити один синій.
Перше, що мені потрібен такий цикл, який би перебирав кожну особливість і setStyle()
сірі всі країни. Це працює, якщо я просто everything.setStyle({color: "#4B1BDE"})
чи щось?
Друга річ - це (це дає мені безсонні ночі), як я вибираю лише одну особливість із групи полігонів GeoJSON, з якою потрібно працювати? Просто країна, яку мені потрібно пофарбувати в синій.
Якщо справа стосується нависання миші, я міг би розмістити слухача подій, як це робиться в навчальних посібниках для листівки. Але незалежно від взаємодії з користувачем, я хочу встановити та скинути стиль, назвавши його своїм іменем, як це робилося з прямокутником вище.
setStyle()
функцію листівки .