Come aggiornare un contenuto popup dal suo marcatore?


11

Ho creato un popup con Leaflet facendo così:

marker.bindPopup(content).openPopup();

Come posso aggiornare il contentvalore in seguito?

Suppongo di farlo dal marcatore, qualcosa del genere:

marker.updatePopup(newContent);

Risposte:


9

Suppongo che desideri che il contenuto venga modificato dopo che si è verificato un evento, come il passaggio del mouse, il menu di scelta rapida o qualsiasi altra cosa.

Per fare ciò, è possibile utilizzare il seguente codice:

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

Come puoi vedere, puoi accedere al popup per il marker desiderato usando il metodo marker._popup, quindi utilizzare il metodo setContent per modificare il testo al suo interno.

popup.setContent del metodo di riferimento

Ecco un po 'di codice su Plunker che lo dimostra: http://plnkr.co/edit/vjS495QPXiJpKalrNpvo?p=preview


Ho scoperto che nel passaggio del mouse dovevo fare: this.getPopup.setContent ('blah blah blah');
TheSteve0

15

_popupha un carattere di sottolineatura per indicare che si tratta di un'istanza privata / membro e alla quale non è possibile accedere direttamente. L'API corretta è Layer.setPopupContent () . per esempio marker.setPopupContent(newContent);


3

Potrebbe essere troppo tardi per rispondere, ma per gli altri, penso che il modo migliore sia qui

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

So che questo è vecchio, ma è emerso nei miei risultati di ricerca di Google, quindi ciò potrebbe significare anche per gli altri ... Il problema con questo metodo è che il numero 1 se il popup non è attualmente aperto, quel clic sul pulsante (o qualsiasi altra cosa a cui ti leghi) non fa nulla. In secondo luogo, se riduci il popup e fai di nuovo clic su di esso, otterrai il contenuto originale, non il nuovo contenuto!
DR

1

Puoi ottenere i contenuti popup con:

marker.getPopup().getContent();

Imposta il contenuto con:

marker.getPopup().setContent("123");
marker.getPopup().update();
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.