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);
Yako
sumber

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

Alexandru Pufan
sumber
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);

ericsoco
sumber
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;
});
Fahd
sumber
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();
andressr
sumber