Saya sudah mulai menggunakan leaflet sebagai peta open source, http://leaflet.cloudmade.com/
Kode jQuery berikut akan memungkinkan pembuatan penanda pada peta di klik peta:
map.on('click', onMapClick);
function onMapClick(e) {
var marker = new L.Marker(e.latlng, {draggable:true});
map.addLayer(marker);
marker.bindPopup("<b>Hello world!</b><br />I am a popup.").openPopup();
};
Tetapi saat ini tidak ada cara bagi saya (dalam kode saya) untuk menghapus penanda yang ada, atau menemukan semua penanda yang telah saya buat di peta dan memasukkannya ke dalam array. Adakah yang bisa membantu saya memahami bagaimana melakukan ini? Dokumentasi leaflet tersedia di sini: http://leaflet.cloudmade.com/reference.html
Jawaban:
Anda harus mengeluarkan "var marker" dari fungsi tersebut. Kemudian nanti Anda dapat mengaksesnya:
lalu nanti:
Tetapi Anda hanya dapat memiliki penanda terbaru dengan cara itu, karena setiap kali, penanda var dihapus oleh yang terbaru. Jadi salah satu cara untuk melakukannya adalah membuat larik global marker, dan Anda menambahkan marker di larik global.
sumber
map._layers
.Anda juga dapat mendorong penanda ke dalam larik. Lihat contoh kode, ini berfungsi untuk saya:
sumber
Berikut adalah kode dan demo untuk Menambahkan penanda , menghapus salah satu penanda dan juga mendapatkan semua penanda yang ada / ditambahkan :
Ini seluruh kode JSFiddle . Juga di sini adalah demo satu halaman penuh .
Menambahkan penanda:
Menghapus Marker:
Mendapatkan semua penanda di peta:
sumber
map._layers[ml].feature
tidak berfungsi lagi.Berikut adalah jsFiddle yang memungkinkan Anda membuat marker menggunakan
onMapClick
metode Anda , lalu menghapusnya dengan mengklik link.Prosesnya mirip dengan undefined - tambahkan setiap penanda baru ke
markers
larik sehingga Anda dapat mengakses penanda tertentu saat Anda ingin berinteraksi dengannya nanti.sumber
delete
untuk menghapus item tersebut. Misalnyadelete markers[$(this).attr('id')];
.(1) tambahkan grup lapisan dan larik untuk menampung lapisan dan referensi ke lapisan sebagai variabel global:
var search_group = new L.LayerGroup (); var clickArr = new Array ();
(2) tambahkan peta
(3) Tambahkan layer grup ke peta
map.addLayer (grup_penelusuran);
(4) fungsi tambahkan ke peta, dengan popup yang berisi tautan, yang ketika diklik akan memiliki opsi hapus. Tautan ini akan memiliki, sebagai id, panjang lintang dari titik tersebut. Id ini kemudian akan dibandingkan dengan ketika Anda mengklik salah satu penanda yang Anda buat dan Anda ingin menghapusnya.
(5) Fungsi remove, bandingkan marker lat long dengan id yang diaktifkan di remove:
sumber
Saat Anda menyimpan penghormatan ke penanda dalam fungsi penambahan, penanda dapat menghapusnya sendiri. Tidak perlu array.
sumber
Apakah Anda mencoba
layerGroup
belum?Dokumen di sini https://leafletjs.com/reference-1.2.0.html#layergroup
Cukup buat satu lapisan, tambahkan semua penanda ke lapisan ini, lalu Anda dapat menemukan dan menghancurkan penanda dengan mudah.
sumber
Dalam kasus saya, saya memiliki berbagai kelompok lapisan sehingga pengguna dapat menampilkan / menyembunyikan kelompok penanda tipe serupa. Namun, bagaimanapun juga, Anda menghapus satu penanda dengan mengulang grup lapisan Anda untuk menemukan dan menghapusnya. Saat melakukan perulangan, cari penanda dengan atribut khusus, dalam kasus saya 'kunci', ditambahkan ketika penanda ditambahkan ke grup lapisan. Tambahkan 'kunci' Anda seperti menambahkan atribut judul. Nanti ini mendapatkan opsi lapisan. Ketika Anda menemukan kecocokan itu, Anda .removeLayer () dan itu menghilangkan penanda khusus itu. Semoga itu bisa membantu Anda!
sumber
Mungkin saya terlambat untuk ini, tetapi saya masih telah membuat satu proyek sorce terbuka untuk melakukan hal yang sama bersama dengan beberapa hal lainnya
https://github.com/ikishanoza/ionic-leaflet
silakan checkout dan beri bintang jika Anda suka :)
sumber