Jawaban pertama saya tampaknya tidak berfungsi dan karena saya sekarang menghadapi masalah yang sama. Ini pendekatan baru:
Leaflet mendukung acara yang disebut contextmenu
. Seperti yang ditemukan dalam dokumentasi acara Leaflet di sini .
Dipecat ketika pengguna menekan tombol mouse sebelah kanan pada peta, mencegah menu konteks browser default dari menunjukkan jika ada pendengar pada acara ini.
Jadi secara teoritis kodenya
marker.on('contextmenu', function(e) {
this.openPopup();
});
harus bekerja dengan baik. Namun ternyata implementasinya tertinggal dari dokumentasi. Sampai sekarang (Leaflet 0.4.5) yang contextmenu
acara ini tampaknya tidak belum didukung pada spidol, meskipun bekerja baik-baik saja pada objek polyline.
Tampaknya akan ada pekerjaan dalam pipa untuk mengaktifkan fitur ini dalam waktu dekat (lihat diskusi di sini dan di sini ). Jadi, saya kira kita hanya bisa berharap bahwa Leaflet mengerjakan ini dengan cepat dan memungkinkan acara di rilis berikutnya ...
Sunting:
Mengabaikan apa yang saya katakan tentang menunggu implementasi. Jika Anda mengunduh cabang utama pengembangan terbaru dan membuat leaflet sendiri, Anda mendapatkan dukungan penuh untuk contextmenu
acara yang menggunakan marker. Selamat coding.
fgysin mengembalikan Monica
sumber
Coba fungsi internal ini:
Seharusnya melakukan trik.
PS Saya tidak pernah menemukan itu dalam dokumentasi apa pun tetapi melihatnya digunakan dalam tambalan. Gunakan dengan risiko Anda sendiri. ;)
Sunting: Saya juga menemukan fungsi internal ini
Yang tampaknya sangat sama dengan
event.preventDefault()
yang ada di jQuery.sumber
L.DomEvent.preventDefault(event);
. Dari apa yang saya lihat (melihat sumber Leaflet.js) ini harus sangat mirip dengan yangpreventDefault()
disediakan oleh jQuery ... Cobalah! :)Saya mendapat solusi kebetulan untuk menghentikan acara.
Misalnya, jika acara dibuat seperti ini -
map.on("click", onMapClick);
, acara dapat dihentikan dengan kode ini -map.off("click", onMapClick);
sumber