Ok, karena saya sudah mengajukan pertanyaan yang sangat panjang tentang ini, tetapi karena tidak mendapatkan balasan baru untuk sementara waktu, dan tidak menjadi bingung secara detail, saya akan membuat yang sederhana ini dengan cara terbaik yang saya bisa.
Jika saya tidak salah, setStyle
fungsi untuk nama, fitur tertentu adalah sebagai berikut:
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"});
... yang akan mengubah warna dari oranye ke biru. Saya juga mengetahui resetStyle()
fungsi yang akan mengembalikan gaya ke aslinya.
Ini adalah bagaimana saya mengatur GeoJSON saya:
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;
}
}
});
Yang ingin saya lakukan adalah membuat satu negara menjadi biru dan yang lainnya menjadi abu-abu, kemudian dalam kode. Ini adalah langkah dua langkah, untuk melukis semua negara menjadi abu-abu, dan kemudian membuat satu biru.
Hal pertama adalah, saya perlu loop yang akan beralih ke setiap fitur dan setStyle()
untuk semua negara menjadi abu-abu. Apakah itu berfungsi jika saya hanya everything.setStyle({color: "#4B1BDE"})
atau sesuatu?
Yang kedua adalah, (itu membuat saya tidak bisa tidur malam) bagaimana cara memilih hanya satu fitur dari sekelompok poligon GeoJSON untuk dikerjakan? Hanya negara yang saya butuhkan untuk melukis menjadi biru.
Jika itu masalah mouse yang melayang, saya bisa menempatkan pendengar acara seperti yang dilakukan dalam tutorial Leaflet. Tetapi terlepas dari interaksi pengguna, saya ingin mengatur dan mengatur ulang gaya dengan memanggilnya dengan namanya, seperti yang saya lakukan dengan persegi panjang di atas.
setStyle()
fungsi leaflet .Jawaban:
Ini berfungsi tanpa perlu menghapus layer dan membuat ulang yang baru seperti yang dijelaskan di atas:
Tampaknya menjadi sedikit lebih efisien daripada menghapus dan menciptakan kembali lapisan geoJson. Dari dokumen,
GeoJSON
lapisan memanjangFeatureGroup
yang pada gilirannya memanjangLayerGroup
.Selain itu, tampaknya setiap fitur geoJson memiliki lapisan sendiri di
FeatureGroup
!sumber
Saya telah menulis kode kecil untuk gaya fitur geojson spesifik menggunakan leaflet. Anda dapat mencobanya di JSFiddle (Asli, non-fungsional) , JSFiddle 2018-02-17 Fungsional , atau menggunakan tes kode berikut secara lokal.
Untuk contoh ini saya menggunakan file us-States.json tetapi dapat digunakan untuk file geojson.
Saya harap ini akan membantu.
Ini kodenya:
sumber
style(feature)
fungsi memeriksafeature.properties.name
nilai. Terima kasih!