ตกลงเนื่องจากฉันได้ถามคำถามที่ยาวมากเกี่ยวกับเรื่องนี้ แต่เนื่องจากมันไม่ได้รับคำตอบใหม่ใด ๆ ชั่วขณะหนึ่งและเพื่อไม่ให้สับสนในรายละเอียดฉันจะเก็บเรื่องนี้ไว้เป็นวิธีที่ดีที่สุดที่ฉันสามารถทำได้
ถ้าฉันไม่เข้าใจผิด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()
ฟังก์ชั่นของแผ่นพับ