javascript - 当图层控件移出 map 元素时,不发出 Leaflet-map 单击事件

标签 javascript events leaflet

我对 Leaflet-map 的点击事件有疑问。

我将图层控件移出 map 元素,如下所示:

document.getElementById('outside-controls').appendChild(ctrl.getContainer());

此后,每次更改图层控制设置时,我都开始错过点击事件。

这是工作示例代码:

var dom_documentClicks = document.getElementById('document-clicks'),
    dom_mapClicks = document.getElementById('map-clicks'),
    count_documentClicks = 0,
    count_mapClicks = 0;

var osmUrl = 'http://{s}.tile.osm.org/{z}/{x}/{y}.png',
    osmAttrib = '&copy; <a href="http://openstreetmap.org/copyright">OpenStreetMap</a> contributors',
    osm = L.tileLayer(osmUrl, {
      maxZoom: 18,
      attribution: osmAttrib
    }),
    poly = L.polygon([]),
    ctrl = L.control.layers({}, {'Polygon Layer': poly}, {collapsed: false});

// initialize the map on the "map" div with a given center and zoom
var map = L.map('map', {layers: [osm, poly]}).setView([61.497752, 23.760954], 12);

ctrl.addTo(map);

// This seems to be the reason why click-event is not emitted.
document.getElementById('outside-controls').appendChild(ctrl.getContainer());


function onDocumentClick(e) {
  count_documentClicks++;
  dom_documentClicks.innerHTML = count_documentClicks;
}

function onMapClick(e) {
  count_mapClicks++;
  dom_mapClicks.innerHTML = count_mapClicks;
}

map.on('click', onMapClick);
document.addEventListener('click', onDocumentClick);

并链接到 jsFiddle: http://jsfiddle.net/LnzN2/135/

有人知道解决此问题的方法(错误吗?)?

最佳答案

似乎 ctrl.getContainer() 返回的 div 消耗了 map 中的下一个点击事件。

更改此设置时:

ctrl.getContainer()

对此:

ctrl.getContainer().childNodes[0]

它有效!

关于javascript - 当图层控件移出 map 元素时,不发出 Leaflet-map 单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38500972/

相关文章:

java - MouseEvent 怪异

JavaScript onClick 事件 - HTML 表格

javascript - 如何在 react-leaflet 中使用带有动态标记的边界

javascript - npm 在构建之前运行测试

javascript - 使方法 "click"跨浏览器的插件

javascript - HERE map 瓦片api与Leaflet,如何获取并显示正确的版权信息?

angular - 如何在 Leaflet 标记的弹出窗口中生成 Angular 4 组件?

javascript - 如何将语义行的高度扩展到页面底部

javascript - JS : How to find double question mark in string

javascript - 为什么不能用 JavaScript 原生保存文件?