Aparentemente, mi primera respuesta no estaba funcionando y ahora estoy enfrentando el mismo problema. Aquí hay un nuevo enfoque:
El folleto admite un evento llamado contextmenu
. Como se encuentra en la documentación del evento del folleto aquí .
Se activa cuando el usuario presiona el botón derecho del mouse en el mapa, evita que se muestre el menú contextual predeterminado del navegador si hay oyentes en este evento.
Entonces teóricamente el código
marker.on('contextmenu', function(e) {
this.openPopup();
});
debería funcionar bien. Pero aparentemente la implementación va a la zaga de la documentación. A partir de ahora (Folleto 0.4.5) el contextmenu
evento aparentemente todavía no es compatible con los marcadores, aunque funciona perfectamente bien en objetos de polilínea.
Parece que hay trabajo en proceso para habilitar esta función en el futuro cercano (ver discusiones aquí y aquí ). Entonces, supongo que podemos esperar que Leaflet trabaje en esto rápidamente y permita el evento en el próximo lanzamiento ...
Editar:
ignore lo que dije acerca de esperar la implementación. Si descarga la última rama maestra de desarrollo y crea el folleto usted mismo, obtendrá soporte completo para contextmenu
eventos en marcadores. Feliz codificación
fgysin reinstala a Monica
fuente
Prueba esta función interna:
Debería hacer el truco.
PD: nunca encontré eso en ninguna documentación, pero vi que se usaba en un parche. Úselo bajo su propio riesgo. ;)
Editar: también encontré esta función interna
Lo que parece ser muy similar a lo
event.preventDefault()
que está en jQuery.fuente
L.DomEvent.preventDefault(event);
. Por lo que he visto (mirando la fuente de Leaflet.js) esto debería ser muy similar alpreventDefault()
proporcionado por jQuery ... ¡Pruébelo! :)Por cierto, obtuve una solución para detener el evento.
Por ejemplo, si un evento se crea así
map.on("click", onMapClick);
, el evento se puede detener con este código.map.off("click", onMapClick);
fuente