2017-02-21 70 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,请不要浪费时间。