Ma première réponse ne fonctionnait apparemment pas et comme je suis maintenant confronté au même problème. Voici une nouvelle approche:
Dépliant prend en charge un événement appelé contextmenu
. Comme indiqué dans la documentation de l'événement Leaflet ici .
Déclenché lorsque l'utilisateur appuie sur le bouton droit de la souris sur la carte, empêche le menu contextuel du navigateur par défaut de montrer s'il y a des écouteurs sur cet événement.
Donc, théoriquement, le code
marker.on('contextmenu', function(e) {
this.openPopup();
});
devrait fonctionner très bien. Mais apparemment, l'implémentation est en retard sur la documentation. Pour l'instant (dépliant 0.4.5), l' contextmenu
événement n'est apparemment pas encore pris en charge sur les marqueurs, bien qu'il fonctionne parfaitement sur les objets polylignes.
Il semble y avoir du travail en cours pour activer cette fonctionnalité dans un proche avenir (voir les discussions ici et ici ). Donc, je suppose que nous pouvons simplement espérer que Leaflet fonctionne rapidement et active l'événement dans la prochaine version ...
Edit:
Ignorez ce que j'ai dit à propos de l'attente de la mise en œuvre. Si vous téléchargez la dernière branche principale de développement et que vous créez vous-même la brochure, vous bénéficiez d'une prise en charge complète des contextmenu
événements sur les marqueurs. Codage heureux.
fgysin réintègre Monica
la source
Essayez cette fonction interne:
Cela devrait faire l'affaire.
PS Je n'ai jamais trouvé cela dans aucune documentation mais je l'ai vu utilisé dans un patch. À utiliser à vos risques et périls. ;)
Edit: j'ai aussi trouvé cette fonction interne
Ce qui semble être très similaire
event.preventDefault()
à celui de jQuery.la source
L.DomEvent.preventDefault(event);
. D'après ce que j'ai vu (en regardant la source Leaflet.js), cela devrait être très similaire à celuipreventDefault()
fourni par jQuery ... Essayez-le! :)J'ai d'ailleurs eu une solution pour arrêter l'événement.
Par exemple, si un événement est créé comme ceci -
map.on("click", onMapClick);
, l'événement peut être arrêté avec ce code -map.off("click", onMapClick);
la source