Est-il possible dans Leaflet que la fenêtre contextuelle s'ouvre au survol de la souris et non au clic?
Cela ne fonctionne que pour un marqueur à la fois, mais j'en ai besoin pour un plus grand nombre de marqueurs:
marker.on('mouseover', function(e){
marker.openPopup();
});
Réponses:
Si vous devez afficher la fenêtre contextuelle d'un marqueur, vous pouvez utiliser la méthode bindPopup des marqueurs.
Ensuite, vous avez plus de contrôle et il sera automatiquement lié à votre marqueur.
Dans l'exemple ci-dessous, vous pouvez afficher la fenêtre contextuelle lorsque l'utilisateur passe la souris sur la souris et la masquer lorsque l'utilisateur la moque:
Remarque: vous pouvez rencontrer des problèmes avec la fermeture des popups lorsque vous passez la souris sur le popup lui-même. Vous devrez donc peut-être ajuster l'ancre du popup dans (voir Paramètres du popup) pour afficher vos popups un peu plus loin du marqueur lui-même. disparaître trop facilement.
la source
la source
Ce n'est pas un problème spécifique à Leaflet, mais plutôt une question de Javascript.
Stockez vos marqueurs dans une collection, puis liez-les
openPopup
à un'mouseover'
événement.Par exemple, avec un tableau:
la source
L.MarkerCluster
instance… Ma réponse montre clairement comment lier une collection de fenêtres contextuelles en survol. Si vous voulez savoir comment obtenir une collection à partir d'un cluster, c'est autre chose.Si vous utilisez Leaflet 1.3.x, la liaison d'infobulle est une méthode intégrée.
http://leafletjs.com/reference-1.3.0.html#tooltip
la source
bindTooltip()
fonctionne aussi sur des marqueurs individuels.Pour ce qui est d'avoir une solution qui fonctionne "pour un plus grand nombre de marqueurs", voici ce que je fais pour chaque couche de données ponctuelles chargées depuis GeoJSON:
la source