Como atualizar um conteúdo pop-up a partir do seu marcador?

11

Eu criei um pop-up com o Leaflet fazendo isso:

marker.bindPopup(content).openPopup();

Como posso atualizar o contentvalor posteriormente?

Suponho que faça isso a partir do marcador, algo como isto:

marker.updatePopup(newContent);
Yako
fonte

Respostas:

9

Suponho que você queira que o conteúdo seja alterado após a ocorrência de algum evento, como mouseover, menu de contexto ou qualquer outra coisa.

Para fazer isso, você pode usar o seguinte código:

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

Como você pode ver, você pode acessar o pop-up do marcador desejado usando o método marker._popup e, em seguida, use o método setContent para alterar o texto dentro dele.

Referência do método popup.setContent

Aqui está um código no Plunker demonstrando isso: http://plnkr.co/edit/vjS495QPXiJpKalrNpvo?p=preview

Alexandru Pufan
fonte
Eu descobri que na passagem do mouse eu precisava fazer: this.getPopup.setContent ('blá blá blá');
precisa saber é o seguinte
15

_popuppossui um sublinhado à frente para indicar que é uma instância privada / membro e não deve ser acessada diretamente. A API correta é Layer.setPopupContent () . por exemplo marker.setPopupContent(newContent);

ericsoco
fonte
3

Pode ser tarde demais para responder, mas para outros, acho que a melhor maneira está aqui

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
fonte
Sei que isso é antigo, mas apareceu nos meus resultados de pesquisa do Google, o que significa que também pode ser para outros ... O problema desse método é que o número 1, se o pop-up não estiver aberto, clique no botão (ou qualquer outra coisa) você se liga) não faz nada. Em segundo lugar, se você escurecer o pop-up e clicar novamente, obterá o conteúdo original, não o novo!
DR
1

Você pode obter o conteúdo pop-up com:

marker.getPopup().getContent();

Defina o conteúdo com:

marker.getPopup().setContent("123");
marker.getPopup().update();
andressr
fonte