Kri*_*eys 2 javascript jquery leaflet
我在我的图层组中制作折线是一个问题而不是可点击的......正如你在下面的代码中看到的那样,我使用传单的内置函数来遍历图层组(route.eachLayer),并尝试添加样式'可点击:false'但这似乎没有做任何事......
//route = layergroup with all polylines
function disableclicking(){
route.eachLayer(function(layer){
layer.setStyle({clickable: false});
});
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用这个代码时,它似乎什么都没改变(虽然它确实在循环中)或者至少,它并没有改变我想要的...
我想要的是折线的类'.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);
Run Code Online (Sandbox Code Playgroud)