2

我在我的图层组中制作折线时遇到问题...正如您在下面的代码中看到的那样,我使用传单的内置功能来遍历图层组(route.eachLayer),并尝试添加样式“可点击” : false' 但这似乎没有任何作用......

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

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

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

4

1 回答 1

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);
于 2015-02-26T13:36:37.853 回答