javascript - 传单问题 : making layergroup of polylines not clickable

标签 javascript jquery leaflet

我在使图层组中的折线不可单击时遇到问题... 正如您在下面的代码中看到的,我使用 leaflet 的内置函数来遍历图层组(route.eachLayer),并尝试添加样式“clickable: false”,但这似乎没有做任何事情......

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

当我尝试使用这段代码时,它似乎没有改变任何东西(尽管它确实进入了循环) 或者至少,它不会改变我想要的......

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

最佳答案

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

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);

关于javascript - 传单问题 : making layergroup of polylines not clickable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11972816/

相关文章:

javascript - Angular 2 Leaflet Tiles 巨大间隙

javascript - Node.js:Promise.all(promises).then(...) 从未执行但程序完成

Javascript递归settimeout

javascript - $ 未定义,当试图动态加载 jQuery 时

java - 如何在 Java Web 应用程序中使用 jQuery 学习 AJAX

javascript - 当只有一个对象存在时,jquery 返回两个对象

javascript - 将数组传递给 blazors IJSRuntime.InvokeAsync

javascript - jquery ajax提交2个不同或多个表单

javascript - JQuery UI 对话框未正确显示在传单顶部

javascript - 使用 Leaflet Slider 显示随时间变化时如何删除标记