leaflet - 当用户在地图外单击时,leafletDirectiveMarker 禁用焦点
问题描述
我在标记上有一个单击功能,它将启用标记弹出窗口。但是当用户在地图外点击时,我想禁用这个焦点。这个怎么做?
$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。
推荐阅读
- javascript - 无法对齐 CSS 中的文本
- javascript - ReactJS ServiceWorker 将相同的代码存储在多个缓存文件中
- python - 按下 tkinter 时按钮禁用
- r - 更改 H2O 函数返回的 ggplot 对象中的几何颜色
- arrays - 如何将两个 u8 和 u16 元素数组合并为一个 u8 元素数组?
- python - 为什么这种按字符频率代码排序的字符串不起作用?
- mysql - 当“where”列可能不存在时,如何在 mysql 中构建选择
- vue.js - 使用 vue-router 4 的点击方法
- javascript - 为什么我的异步功能没有等待承诺的履行
- javascript - 使用 axios 和条形码扫描仪从 API 获取数据