简体   繁体   English

图层控件移出地图元素时未发出传单地图点击事件

[英]Leaflet-map click event not emitted when layer controls moved out of map-element

I have a problem with Leaflet-map's click-event. 我对Leaflet地图的点击事件有疑问。

I moved Layers-control out of map-element like this: 我将图层控件从地图元素中移出,如下所示:

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

After that I started to miss click-event every time I change layers-control setup. 之后,每次更改图层控件设置时,我都开始错过点击事件。

Here is working sample code: 这是工作示例代码:

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);

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

Anyone who knows a way to get rid of this issue (bug?)? 有谁知道摆脱这个问题的方法(错误?)?

It seems that ctrl.getContainer() returns div that consumes next click-event from map. 似乎ctrl.getContainer()返回的div消耗了map中的下一个click-event。

when changing this: 更改此内容时:

ctrl.getContainer()

to this: 对此:

ctrl.getContainer().childNodes[0]

it works! 有用!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM