Suite

Comment mettre à jour un contenu popup à partir de son marqueur ?


J'ai créé une fenêtre contextuelle avec Leaflet :

marker.bindPopup(content).openPopup();

Comment puis-je mettre à jour lecontenuvaleur après?

Je suppose de le faire à partir du marqueur, quelque chose comme ceci:

marker.updatePopup(newContent);

Je suppose que vous voulez que le contenu soit modifié après qu'un événement se soit produit, comme le passage de la souris, le menu contextuel ou toute autre chose.

Pour ce faire, vous pouvez utiliser le code suivant :

//création de marqueur var marker = L.marker([44.63, 22.65]).bindPopup('quelquechose').addTo(map); marqueur.openPopup(); //modification du contenu au passage de la souris marker.on('mouseover', function(){ marker._popup.setContent('something else') });

Comme vous pouvez le voir, vous pouvez accéder à la fenêtre contextuelle du marqueur souhaité à l'aide de la méthode marker._popup, puis utiliser la méthode setContent pour modifier le texte à l'intérieur.

référence de la méthode popup.setContent

Voici du code sur Plunker démontrant cela : http://plnkr.co/edit/vjS495QPXiJpKalrNpvo?p=preview


_surgira un trait de soulignement devant pour indiquer qu'il s'agit d'une instance privée/membre et qu'il ne faut pas y accéder directement. L'API correcte est Layer.setPopupContent(). par exemple.marker.setPopupContent(newContent);


Peut-être qu'il est trop tard pour répondre, mais pour les autres, je pense que le meilleur moyen est ici

http://jsfiddle.net/cPTQF/

$('button').click(function() { // Mettre à jour le contenu de la fenêtre contextuelle $(popup._contentNode).html('Le nouveau contenu est beaucoup plus long, la fenêtre contextuelle doit donc mettre à jour son apparence.'); / / Appel de _updateLayout au popup redimensionne au nouveau contenu popup._updateLayout(); // Appel de _updatePosition pour que le popup soit centré. popup._updatePosition(); return false; });

Vous pouvez obtenir le contenu contextuel avec :

marker.getPopup().getContent();

Définissez le contenu avec :

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