宣传单问题:使折线图层组无法点击

时间:2012-08-15 16:01:39

标签: javascript jquery leaflet

我遇到了一个问题,即在我的图层组中制作折线不可点击... 正如你在下面的代码中看到的那样,我使用leaflet的内置函数来遍历layergroup(route.eachLayer),并尝试添加样式&click;可点击:false'但这似乎没有做任何事......

//route = layergroup with all polylines
function disableclicking(){
    route.eachLayer(function(layer){
        layer.setStyle({clickable: false});
    });
}

当我尝试使用这段代码时,它似乎什么都没改变(虽然它确实在循环中) 或者至少,它并没有改变我想要的......

我想要的是折线的课程' .leaflet-clickable'被删除......这似乎不会发生。当您将样式更改为不可点击或我的循环有问题时,此类是否会更改?

1 个答案:

答案 0 :(得分:5)

我有类似的需求,因为接受的答案与问题无关,我会发布我提出的解决方案(以防其他人从谷歌到达这里)。

function setClickable(target, value) {
    if(value && !target.options.clickable) {
        target.options.clickable = true;
        L.Path.prototype._initEvents.call(target);
        target._path.removeAttribute('pointer-events');
    } else if(!value && target.options.clickable) {
        target.options.clickable = false;

        // undoing actions done in L.Path.prototype._initEvents
        L.DomUtil.removeClass(target._path, 'leaflet-clickable');
        L.DomEvent.off(target._container, 'click', target._onMouseClick);
        ['dblclick', 'mousedown', 'mouseover', 'mouseout', 'mousemove', 'contextmenu'].forEach(function(evt) {
            L.DomEvent.off(target._container, evt, target._fireMouseEvent);
        });

        target._path.setAttribute('pointer-events', target.options.pointerEvents || 'none');
    }
}

setClickable(myLayer, false);