leafletDirectiveMarker отключить фокус, когда пользователь нажимает вне карты - PullRequest
0 голосов
/ 26 июня 2018

У меня есть функция щелчка по маркеру, которая активирует всплывающее окно маркера. Но когда пользователь нажимает вне карты, я хочу отключить этот фокус. Как это сделать?

$scope.$on('leafletDirectiveMarker.click', function (event, args) {

            $scope.markers['m' + args.model.value.id].focus = true;

            createTemplateForPopup(args.model.value);
        });

1 Ответ

0 голосов
/ 06 июля 2018

Вы можете просто прослушать событие окна и отключить все фокусы при нажатии:

$window.addEventListener('click', function(e) {
  $scope.markers.forEach(function(marker) {
   marker.focus = false;
  });
});

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

$scope.$on('leafletDirectiveMarker.click', function (event, args) {
  event.preventDefault();
  $scope.markers['m' + args.model.value.id].focus = true;
  createTemplateForPopup(args.model.value);
});

Единственная проблема в том, что это всегда будет срабатывать. Поэтому рекомендуется удалять EventListner при уничтожении карты.

...