我认为这个问题说明了一切。
我正在使用传单。我正在地图上加载三层。
但是,我找不到在点击地图后知道在哪个图层上单击的方法。
基本上是因为没有在图层上设置事件处理程序,仅在地图上设置了。
我还尝试将图层添加到要素组中,然后将单击事件添加到该要素组中。但是,单击地图不会导致任何事件/响应。
这是我在featureGroup中所做的:
addWaterNameLayers:function(){
var knownWaters = L.tileLayer.wms(getGeoServer('wms', geoEnviroment), {
layers: this.wmsLayers.known.name,
format: 'image/png',
opacity: 0,
styles: 'cursor: pointer',
transparent: true,
attribution: ""
});//.addTo(this.mapInfo);
var unknownWaters = L.tileLayer.wms(getGeoServer('wms', geoEnviroment), {
layers: this.wmsLayers.unknown.name,
format: 'image/png',
opacity: 0.3,
styles: '',
transparent: true,
attribution: ""
});
L.FeatureGroup(knownWaters, unknownWaters).on('click', function(event) {
console.log('click');
this.handleClick(event);
},this);
//this part will work on mapclick, so on featuregroup it should work?
//when clicking on the map
/*
this.mapInfo.on('click', function(event) {
this.handleClick(event);
}, this);
*/
},
在上面的代码中,您还可以在te map上看到click事件。
在功能组上则没有。
另外,当我将featureGroup的代码更改为这些代码时,它也不起作用:
var featGr = L.FeatureGroup(knownWaters, unknownWaters).on('click', function(event) {
this.handleClick(event);
},this);
var featGr = L.FeatureGroup(knownWaters, unknownWaters);
featGr.on('click', function(event) {
this.handleClick(event);
},this);
将FeatureGroup添加到图层也将无济于事...
最佳答案
将图层放在L.FeatureGroup中。 L.FeatureGroup是L.LayerGroup的扩展,它添加了事件。它还支持clickevent,因此正是您所需要的。检查文档:http://leafletjs.com/reference.html#featuregroup
关于javascript - 如何在特定的传单层上捕获点击,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27168628/