Bagaimana cara memperbarui konten popup dari markernya?


11

Saya membuat popup dengan Leaflet melakukannya:

marker.bindPopup(content).openPopup();

Bagaimana saya bisa memperbarui contentnilai setelahnya?

Saya kira melakukannya dari marker, kira-kira seperti ini:

marker.updatePopup(newContent);

Jawaban:


9

Saya kira Anda ingin kontennya diubah setelah beberapa peristiwa terjadi, seperti mouseover, contextmenu, atau apa pun.

Untuk melakukannya, Anda dapat menggunakan kode berikut:

//marker creation
var marker = L.marker([44.63, 22.65]).bindPopup('something').addTo(map);
marker.openPopup();

//changing the content on mouseover
marker.on('mouseover', function(){
    marker._popup.setContent('something else')
});

Seperti yang Anda lihat, Anda dapat mengakses popup untuk marker yang diinginkan menggunakan metode marker._popup, dan kemudian menggunakan metode setContent untuk mengubah teks di dalamnya.

referensi metode popup.setContent

Berikut ini beberapa kode di Plunker yang menunjukkan ini: http://plnkr.co/edit/vjS495QPXiJpKalrNpvo?p=preview


Saya menemukan bahwa di mouseover saya perlu melakukan: this.getPopup.setContent ('blah blah blah');
TheSteve0

15

_popupmemiliki garis bawah di depannya untuk menunjukkan bahwa itu adalah contoh pribadi / anggota, dan tidak boleh diakses secara langsung. API yang benar adalah Layer.setPopupContent () . misalnya marker.setPopupContent(newContent);


3

Mungkin terlambat untuk menjawab, tetapi bagi yang lain, saya pikir cara terbaik ada di sini

http://jsfiddle.net/cPTQF/

$('button').click(function() {
   // Update the contents of the popup
   $(popup._contentNode).html('The new content is much longer so the popup should update how it looks.');

   // Calling _updateLayout to the popup resizes to the new content
   popup._updateLayout();

   // Calling _updatePosition so the popup is centered.
   popup._updatePosition();
   return false;
});

Saya tahu ini sudah lama, tetapi muncul di hasil pencarian Google saya sehingga berarti mungkin untuk orang lain juga ... Masalah dengan metode ini adalah bahwa # 1 jika popup tidak terbuka, klik tombol itu (atau apa pun Anda mengikat) tidak melakukan apa pun. Kedua, jika Anda menghapus popup dan mengkliknya lagi, Anda mendapatkan konten asli, bukan konten baru!
DR

1

Anda bisa mendapatkan konten sembulan dengan:

marker.getPopup().getContent();

Atur kontennya dengan:

marker.getPopup().setContent("123");
marker.getPopup().update();
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.