Jak zaktualizować wyskakujące treści z markera?

12

Utworzyłem wyskakujące okienko z ulotką:

marker.bindPopup(content).openPopup();

Jak mogę contentpóźniej zaktualizować wartość?

Przypuszczam, że robię to z markera, coś takiego:

marker.updatePopup(newContent);
Yako
źródło

Odpowiedzi:

10

Przypuszczam, że chcesz zmienić treść po wystąpieniu jakiegoś zdarzenia, takiego jak najechanie myszą, menu kontekstowe lub cokolwiek innego.

Aby to zrobić, możesz użyć następującego kodu:

//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')
});

Jak widać, można uzyskać dostęp do wyskakującego okienka dla żądanego znacznika za pomocą metody marker._popup, a następnie użyć metody setContent, aby zmienić tekst w nim umieszczony.

Odwołanie do metody popup.setContent

Oto kod demonstrujący to w Plunker: http://plnkr.co/edit/vjS495QPXiJpKalrNpvo?p=preview

Alexandru Pufan
źródło
Odkryłem, że po najechaniu kursorem myszy muszę to zrobić: this.getPopup.setContent („bla bla bla”);
TheSteve0
15

_popupma przed nim znak podkreślenia wskazujący, że jest to instancja prywatna / członkowska i nie należy uzyskiwać do niej bezpośredniego dostępu. Poprawnym interfejsem API jest Layer.setPopupContent () . na przykład marker.setPopupContent(newContent);

ericsoco
źródło
3

Może być za późno, by odpowiedzieć, ale dla innych myślę, że najlepsze sposoby są tutaj

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
źródło
Wiem, że to jest stare, ale pojawiło się w moich wynikach wyszukiwania Google, co oznacza, że ​​może to również dotyczyć innych ... Problem z tą metodą polega na tym, że # 1, jeśli wyskakujące okienko nie jest aktualnie otwarte, kliknięcie przycisku (lub cokolwiek innego wiążesz się) nic nie robi. Po drugie, jeśli wyskakujesz okienko i klikniesz je ponownie, otrzymasz oryginalną treść, a nie nową!
DR
1

Możesz pobrać wyskakujące treści za pomocą:

marker.getPopup().getContent();

Ustaw zawartość za pomocą:

marker.getPopup().setContent("123");
marker.getPopup().update();
Andressr
źródło