Bonjour,
LE CONTEXTE
J'ai écrit plusieurs directives AngularJS pour le dépliant. Un pour la carte, un pour le calque, un pour les marqueurs et un pour les popups.
La directive angulaire pour popup, est à l'écoute d'un marqueur à associer.
.bindPopup(popup)
.on('dragstart', function () {
console.log(dragstart");
})
.on('dragend', function () {
console.log("dragend!");
})
.on('popupopen', function (popup) {
console.log("popup opened !", popup);
});
ATTENDU
Tous les événements doivent être déclenchés.
RÉSULTAT
popupevent
n'est pas déclenché ? Les autres sont licenciés.
Notice : 0,7,2
OS : Windows 7
navigateur : Google Chrome 37 & Firefox 32
Après quelques tests, le problème venait de notre bibliothèque personnalisée popup.
commentaire avez-vous fait?
22/09/2014 11:39 GMT + 02:00 Pierre Baron [email protected] :
Fermé #2907 https://github.com/Leaflet/Leaflet/issues/2907.
-
Répondez directement à cet e-mail ou consultez-le sur GitHub
https://github.com/Leaflet/Leaflet/issues/2907#event -168346883.
Voici le problème, lorsque vous faites cela
var coordinates = {};
var markerOptions = {};
var marker = L.marker(coordinates), markerOptions );
marker.bindPopup("my content");
La méthode bindPopup()
peut avoir un objet String ou Popup. Pour cet exemple, nous passons une chaîne et la méthode créera le bon popup. Si vous transmettez un élément contextuel personnalisé, vous devez d'abord ajouter le marqueur dans la fenêtre contextuelle. Sinon, le popup n'aura jamais son élément source.
La solution finale.
var coordinates = {};
var markerOptions = {};
var marker = L.marker(coordinates), markerOptions );
var popupOptions = {};
// you have to append the marker on the creation of the popup
// so that the popup element will have the marker source.
var popup = L.popup(popupOptions, marker );
// and this will work !
marker
.bindPopup(popup)
.on('dragstart', function () {
console.log(dragstart");
})
.on('dragend', function () {
console.log("dragend!");
})
.on('popupopen', function (popup) {
console.log("popup opened !", popup);
});
Commentaire le plus utile
Voici le problème, lorsque vous faites cela
La méthode
bindPopup()
peut avoir un objet String ou Popup. Pour cet exemple, nous passons une chaîne et la méthode créera le bon popup. Si vous transmettez un élément contextuel personnalisé, vous devez d'abord ajouter le marqueur dans la fenêtre contextuelle. Sinon, le popup n'aura jamais son élément source.La solution finale.