Leaflet 当用户在地图外单击时,单张方向标记禁用焦点

Leaflet 当用户在地图外单击时,单张方向标记禁用焦点,leaflet,angular-leaflet-directive,cumulocity,Leaflet,Angular Leaflet Directive,Cumulocity,我在标记上有一个单击功能,它将启用标记弹出窗口。但是当用户在地图外单击时,我想禁用此焦点。如何做到这一点 $scope.$on('leafletDirectiveMarker.click', function (event, args) { $scope.markers['m' + args.model.value.id].focus = true; createTemplateForPopup(args.model.value);

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

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

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

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

您只需收听窗口事件并禁用单击时的所有焦点:

$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是一种很好的做法