首页 > 解决方案 > 当用户在地图外单击时,leafletDirectiveMarker 禁用焦点

问题描述

我在标记上有一个单击功能,它将启用标记弹出窗口。但是当用户在地图外点击时,我想禁用这个焦点。这个怎么做?

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

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

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

标签: leafletangular-leaflet-directivecumulocity

解决方案


您可以简单地收听一个窗口事件并禁用所有对点击的关注:

$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。


推荐阅读