我认为这个问题说明了一切。
我正在使用传单。我正在地图上加载三层。

但是,我找不到在点击地图后知道在哪个图层上单击的方法。
基本上是因为没有在图层上设置事件处理程序,仅在地图上设置了。

我还尝试将图层添加到要素组中,然后将单击事件添加到该要素组中。但是,单击地图不会导致任何事件/响应。

这是我在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/

10-10 13:00