2016-07-21 12 views
0

Ich habe ein Problem mit dem Click-Event von Leaflet-map.Leaflet-map Klick-Ereignis wird nicht ausgegeben, wenn Layer-Steuerelemente aus dem Map-Element verschoben wurden

Ich bewegte Ebenen-Steuerung aus map-Elemente wie folgt:

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

Danach begann ich jedesmal, wenn ich Schichten-Steuerung Setup ändern Click-Ereignis zu verpassen.

Hier arbeitet Beispielcode:

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

und Link zu jsFiddle: http://jsfiddle.net/LnzN2/135/

Wer einen Weg kennt dieses Problem loszuwerden (Bug?)?

Antwort

1

Es scheint, dass ctrl.getContainer() div zurückgibt, das nächste Klick-Ereignis aus Karte verbraucht.

beim Ändern dieses:

ctrl.getContainer() 

dazu:

ctrl.getContainer().childNodes[0] 

es funktioniert!