Saya ingin dapat mengubah urutan lapisan dalam selebaran.
Saya mencoba menerapkan dua plugin leaflet untuk mengubah urutan layer.
Pertama saya mencoba leaflet-control-orderlayers , yang sepertinya berfungsi, tetapi tidak mendukung layerGroups, ini bug yang saya ajukan .
Selanjutnya saya mencoba mapbbcode , yang memang mendukung layerGroups, tetapi sepertinya tidak berfungsi atau dipertahankan.
Adakah yang punya saran untuk menerapkan fitur ini?
Jawaban:
Anda dapat melakukan ini dalam beberapa cara (setidaknya; ini adalah bagaimana saya melakukannya):
layer.bringToFront()
danlayer.bringToBack()
tetapi ini hanya akan melakukan satu lapisan pada satu waktu, dan hanya mendorongnya ke depan atau belakang, tidak di antaranya. Jadi Anda harus meletakkan layer Anda dalam urutan yang diinginkan, mulai dengan layer yang Anda inginkan berada di bawah, dan panggillayer.bringToFront()
setiap layer.Anda juga dapat melakukan ini dengan menghapus dan menambahkan kembali layer. Ini sepertinya agak sia-sia, tetapi karena peta harus digambar ulang saat memposisikan ulang layer, umumnya tidak terlalu besar.
Berikut adalah biola yang cukup rumit yang menggambarkan masalah ini
Pada dasarnya Anda menghapus semua layer dan kemudian menambahkannya kembali dalam
z-index
urutan menaik . Jadi loop melalui semua lapisan overlay Anda, dan panggilmap.removeLayer(layer)
, lalu urutkan berdasarkan yang Anda inginkanz-index
, lalu tambahkan kembali menggunakanlayer.addTo(map)
.sumber
Saya mengalami masalah yang sama dan saya mencoba metode fixZOrder (), tetapi sayangnya itu tidak memerintahkan spidol Leaf untuk saya karena tampaknya tidak mempengaruhi zindex spidol Leaflet.
Sepertinya .bringToFront () hanya berfungsi pada bentuk vektor yang mendukung metode ini, sebaliknya pada spidol Leaf yang saya gunakan membuat solusi ini tidak bisa dijalankan, belum lagi masalah kode lain yang saya alami dengan fixZOrder (), tetapi ini bisa unik untuk kasus saya.
Alih-alih, saya hanya meninggalkan lapisan memesan ke Leaflet (opsi) dalam urutan saya memuatnya , yang menyebabkan masalah dengan penumpukan marker (plugin OMS Spiderf) ketika menggunakan kontrol lapisan , tapi saya berhasil menyelesaikannya dengan bantuan funtion saya sendiri berdasarkan setZIndexOffset ()
Meskipun skenario saya tidak memerlukan
fixZOrder(layers)
pada akhirnya siapa pun yang menggunakan metode ini bersama dengan marker bertumpuk mungkin perlu mengadopsi pendekatan yang sama dan karenanya saya memposting ini sebagai solusi tambahan untuk pengguna potensial dari metode urutan lapisan yang disebutkan di atas.
KREDIT : jawaban ghybs di stackoverflow.com/a/37850189/11106279
sumber
Mirip dengan jawaban dari @nothing tidak perlu, kegunaan berikut
layer.bringToFront()
untuk mempertahankan z-order ketika Anda telah menggabungkanlayer control
dan memuat data yang tidak sinkron.Tentukan lapisan:
Gunakan fungsi berikut untuk menegakkan z-order:
Saat menggunakan kontrol Layer, ketika sebuah Layer diubah menjadi tampilan, itu akan berada di atas layer lain, kita perlu menerapkan kembali logika pesanan ketika sebuah layer ditambahkan. Ini dapat dilakukan dengan mengikat ke
overlayadd
acara di peta dan memanggilfixZOrder
fungsi:sumber
Anda harus membuat Panel untuk mengontrol pesanan.
Dengan ini, Anda dapat menambahkan lapisan ke panel yang Anda inginkan.
sumber