Leaflet: .on ('popupopen') событие не запускается для маркеров

Созданный на 22 сент. 2014  ·  3Комментарии  ·  Источник: Leaflet/Leaflet

Привет,

КОНТЕКСТ
Я написал несколько директив AngularJS для листовки. Один для карты, один для слоя, один для маркеров и один для всплывающих окон.

Директива angular для всплывающего окна ожидает привязки маркера.

    .bindPopup(popup)
    .on('dragstart', function () {
        console.log(dragstart");
    })
    .on('dragend', function () {
        console.log("dragend!");
    })
    .on('popupopen', function (popup) {
        console.log("popup opened !", popup);
    });

ОЖИДАЛ
Все события должны быть запущены.

РЕЗУЛЬТАТ

popupevent не увольняется? Остальные уволены.


Листовка: 0,7,2
ОС: Windows 7
браузер: Google Chrome 37 и Firefox 32

Самый полезный комментарий

Вот в чем проблема, когда вы это делаете

var coordinates = {};
var markerOptions = {};
var marker = L.marker(coordinates), markerOptions );
marker.bindPopup("my content");

Метод bindPopup() может иметь объект String или Popup. В этом примере мы передаем String, и метод создаст правильное всплывающее окно. Если вы передаете настраиваемый всплывающий элемент, вы должны добавить маркер во всплывающее окно раньше. В противном случае у всплывающего окна никогда не будет исходного элемента.

Окончательное решение.

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);
    });

Все 3 Комментарий

После некоторых тестов проблема возникла в нашей всплывающей пользовательской библиотеке.

комментарий avez vous fait?

2014-09-22 11:39 GMT + 02: 00 Пьер Барон [email protected] :

Закрыт № 2907 https://github.com/Leaflet/Leaflet/issues/2907.

-
Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/Leaflet/Leaflet/issues/2907#event -168346883.

Вот в чем проблема, когда вы это делаете

var coordinates = {};
var markerOptions = {};
var marker = L.marker(coordinates), markerOptions );
marker.bindPopup("my content");

Метод bindPopup() может иметь объект String или Popup. В этом примере мы передаем String, и метод создаст правильное всплывающее окно. Если вы передаете настраиваемый всплывающий элемент, вы должны добавить маркер во всплывающее окно раньше. В противном случае у всплывающего окна никогда не будет исходного элемента.

Окончательное решение.

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);
    });
Была ли эта страница полезной?
0 / 5 - 0 рейтинги