作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
要求:
我需要能够检测用户何时在传单的 map 控件内手动单击打开/关闭图层。
问题:
我发现了“overlayadd”和“overlayremove”事件,并尝试将我的逻辑附加到这些事件,但它们似乎也在我在代码中其他地方进行的直接“addLayer”和“removeLayer”调用期间触发。这太笼统了。我只关心用户何时发起操作。
我可以将监听器直接附加到控件复选框元素,并深入 DOM 以查找相应的层名称,但这比我想要的更多地依赖于它们的 HTML 结构,因为他们可以随心所欲地更改它。
是否有任何潜伏于 L.control 操作更具体的事件,或者是否有隐藏在 overlayadd/overlayremove 事件参数中的方法来检测触发该操作的原因? ...或者只是其他方法来实现这一点?
谢谢
最佳答案
当L.Control.Layers
clickhandler触发时,它将自己的“私有(private)”_handlingClick
属性设置为true:
var marker = new L.Marker([0, 0]);
var control = new L.Control.Layers(null, {
'Marker': marker
}).addTo(map);
map.on('overlayadd overlayremove', function (e) {
if (control._handlingClick) {
// Executes only on input toggle, not on
// map.addLayer(marker) or map.removeLayer(marker)
}
});
关于javascript - 在控制范围内检测层启用/禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34278968/
我是一名优秀的程序员,十分优秀!