2017-10-21 23 views
1

Dans this example vous pouvez créer un polygone, puis cliquer dessus et le menu contextuel s'affiche. Il y a trois boutons: modifier, supprimer et choisir une couleur. Comment puis-je détecter un événement et déterminer lequel est supprimé ou modifié dans le menu contextuel? Je veux effectuer une action lorsque l'un de ces événements est exécuté, par ex. quand un polygone est édité ou supprimé. La façon standart pour cela:Comment détecter les événements "supprimer" ou "éditer" dans le menu contextuel créé avec le plugin Leaflet-draw-toolbar?

map.on('draw:created', function (evt) { 
     layer = evt.layer; 
     // do something when polygon is created 
}); 

map.on('draw:edited', function (evt) { 
     layer = evt.layer; 
     // do something when polygon is edited 
}); 

map.on('draw:deleted', function (evt) { 
     layer = evt.layer; 
     // do something when polygon is deleted 
}); 

Mais pour les événements dans le menu contextuel, cela ne fonctionne pas.

Je modifié le fichier leaflet.draw-toolbar.js et ajouté mon événement personnalisé 'draw-popup:edited'

LeafletToolbar.EditAction.Popup.Edit = LeafletToolbar.ToolbarAction.extend({ 
... 
    map.on('click', function() { 
     shape.editing.disable(); 
     shape.fire('draw-popup:edited', shape); 
    }); 
... 
}); 

Maintenant, dans mon fichier script que je suis capable de détecter 'draw-popup:edited' événement

layer.on('draw-popup:edited', function() { 
     var geom = this.toGeoJSON(); 
     console.log(geom); 

}); 

Mais maintenant il est tiré à plusieurs reprises quand je cliquez sur une carte et retourne toutes les formes qui ont été éditées. Quelle est la bonne façon de détecter un événement et de retourner la forme qui a été modifiée?

Répondre

0

Vous pouvez le code suivant:

$('#map').on('click', '.leaflet-popup-toolbar',() => {console.log('click')}) 
+0

merci pour la réponse. Votre code détecte simplement l'événement de clic dans le menu contextuel. Mais je veux savoir quelle action - supprimer ou éditer - a été exécutée et quel polygone a été supprimé ou édité. J'ai corrigé la question. – dabajabaza