如何捕获特定传单图层上的单击

时间:2014-11-27 10:42:22

标签: javascript leaflet

我认为问题就是这么说的。 我正在使用传单。我在地图上加载了三层。

但是我无法找到一种方法来了解点击地图后我点击的图层。 基本上是因为没有在图层上设置事件处理程序,只能在地图上设置。

我还尝试将图层添加到要素组中,并向此要素组添加点击事件。但是,点击地图不会导致任何事件/响应。

这就是我在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地图上的点击事件......一个有效。 在功能组上它没有。

此外,当我将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添加到图层也不会做任何事情......

2 个答案:

答案 0 :(得分:1)

将图层放入L.FeatureGroup。 L.FeatureGroup是L.LayerGroup的扩展,它添加了事件。它还支持clickevent,这正是您正在寻找的。查看文档:{​​{3}}

答案 1 :(得分:0)

event.layer是图层数据

event.originalEvent.path [0]是您点击的元素