событие листинга не запускается в листовке - PullRequest
0 голосов
/ 25 мая 2018

Я использую leaflet.js для своего приложения.Событие щелчка не запускается вместе с событием наведения мыши.

   layer.on({
                mouseover: function (e) {
                    L.popup().setLatLng(e.latlng)
                    .setContent("Test")
                    .openOn(map);
                },
                click: function () {
                    alert("Click");
                    map.fire("click", e);
                }
            });

Я использую пользовательский маркер вместо маркера круга

    option.pointToLayer = function (feature, latlng) {
   var marker = L.marker(latlng);
                    var icon = L.icon({
            iconUrl: 'Image/InvestmentIcons/environmentalflow.png',
            iconSize: [12, 12], // size of the icon
        });

                        marker.options.icon = icon;
                        return marker;
                    }

1 Ответ

0 голосов
/ 25 мая 2018

Что происходит, когда пользователь пытается щелкнуть ваш маркер (который вызовет ваш "click" прослушиватель событий, т.е. отобразит ваш alert), он должен сначала навести указатель мыши на маркер, который открывает всплывающее окнов этой позиции (соответственно с вашим "mouseover" слушателем событий), поэтому всплывающее окно теперь получает щелчок вместо вашего маркера.

Вы можете видеть, что ваш "click" слушатель по-прежнему работает должным образом, расположивкурсор мыши, кроме всплывающей «подсказки», где он не закрывает значок маркера, но курсор мыши все еще немного на маркере:

Screenshot mouse cursor next to Popup tip to click on Marker

Чтобы попробовать его вживую: https://plnkr.co/edit/8Zu0cYeYATp2qY6ltn7N?p=preview

Чтобы избежать этой проблемы с UX, вы можете попробовать использовать Tooltip вместо всплывающего окна, например.По умолчанию он отображается сбоку от координат, а не над ним (из-за этого всплывающее окно закрывает маркер).

...