2012-08-15 33 views
2

我在使圖層組中的多段線不可點擊時出現問題... 正如您在下面的代碼中看到的那樣,我使用了傳單的內置函數來通過圖層組route.eachLayer),並嘗試添加風格「可點擊:假」,但這似乎並沒有做任何事情...單張問題:製作多段線的圖層組不可點擊

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

,當我嘗試使用此代碼,它似乎沒有任何改變(它但在循環雖然) 或至少,它不會改變我想要的...

我想要的是,折線的類'.leaf讓可點擊的'被刪除...並且這似乎不會發生。當您將樣式更改爲無法點擊或者我的循環出現問題時,此類是否會發生變化?

回答

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