2017-02-21 110 views
3

我可能有很多標誌物在一些地區,但這不是真正有用的顯示工具提示,如果有其中5在同一地區,像這樣的畫面:隱藏提示

enter image description here

是否有可能hide這些工具提示從一個縮放範圍?例如,隱藏工具提示從0級到5

也許使用getZoom()法變焦的事件,如:

if the user zoom { 
    if (getZoom() < 5) { 
     hide all tooltip 
    } 
} 

或者更復雜的東西,但更好的可能遮蓋它,如果有太多在同一地區的許多標記?

回答

2

要隱藏基於縮放範圍的工具提示,請參閱此Leaflet issue conversation,其中引用this JS bin。下面的代碼重複:

var lastZoom; 
map.on('zoomend', function() { 
    var zoom = map.getZoom(); 
    if (zoom < 15 && (!lastZoom || lastZoom >= 15)) { 
    map.eachLayer(function(l) { 
     if (l.getTooltip) { 
     var toolTip = l.getTooltip(); 
     if (toolTip) { 
      this.map.closeTooltip(toolTip); 
     } 
     } 
    }); 
    } else if (zoom >= 15 && (!lastZoom || lastZoom < 15)) { 
    map.eachLayer(function(l) { 
     if (l.getTooltip) { 
     var toolTip = l.getTooltip(); 
     if (toolTip) { 
      this.map.addLayer(toolTip); 
     } 
     } 
    }); 
    } 
    lastZoom = zoom; 
}) 

編輯:也看到this StackOverflow question

+0

非常感謝這是完美的,抱歉沒有找到它! – Baptiste

1

接受的答案並沒有爲我工作(我使用單張1.2.0),但這裏是使用permanent選擇單張的工具提示的修改版本:

var lastZoom; 
mymap.on('zoomend', function() { 
    var zoom = mymap.getZoom(); 
    if (zoom < tooltipThreshold && (!lastZoom || lastZoom >= tooltipThreshold)) { 
     mymap.eachLayer(function(l) { 
      if (l.getTooltip()) { 
       var tooltip = l.getTooltip(); 
       l.unbindTooltip().bindTooltip(tooltip, { 
        permanent: false 
       }) 
      } 
     }) 
    } else if (zoom >= tooltipThreshold && (!lastZoom || lastZoom < tooltipThreshold)) { 
     mymap.eachLayer(function(l) { 
      if (l.getTooltip()) { 
       var tooltip = l.getTooltip(); 
       l.unbindTooltip().bindTooltip(tooltip, { 
        permanent: true 
       }) 
      } 
     }); 
    } 
    lastZoom = zoom; 
}) 

使用此方法也有在最初綁定刀尖標記以及設置permanent選項:

(mymap.getZoom() >= tooltipThreshold 
    ? marker.bindTooltip(tooltipText, {permanent:true}) 
    : marker.bindTooltip(tooltipText, {permanent:false}) 
); 

在一個單獨的,但相關的說明,在接受答案的鏈接是有關單張標籤插件一個計算器問題,這已被納入作爲工具提示評爲Leaflet核心,現在已經過時,所以如果您有最新版本的Leaflet,請不要浪費時間。