Bap*_*ste 5 javascript leaflet
我可能在某些区域有很多标记,但是如果同一区域中有 5 个标记,则显示工具提示并不是很有用,例如此屏幕:
是否可以hide从缩放范围获得那些工具提示?例如,隐藏级别 0 到 5 的工具提示。
也许使用getZoom()带有缩放事件的方法,例如:
if the user zoom {
if (getZoom() < 5) {
hide all tooltip
}
}
Run Code Online (Sandbox Code Playgroud)
或者更复杂但更好的东西,如果同一区域有太多标记,它可以隐藏它?
接受的答案对我不起作用(我使用的是 Leaflet 1.2.0),但这是一个使用permanentLeaflet 工具提示选项的修改版本:
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;
})
Run Code Online (Sandbox Code Playgroud)
使用此方法,您还必须permanent在最初将工具提示绑定到标记时设置该选项:
(mymap.getZoom() >= tooltipThreshold
? marker.bindTooltip(tooltipText, {permanent:true})
: marker.bindTooltip(tooltipText, {permanent:false} )
);
Run Code Online (Sandbox Code Playgroud)
在一个单独但相关的说明中,已接受答案中的链接是关于 Leaflet Label 插件的 stackoverflow 问题,该插件已作为工具提示并入 Leaflet 核心,现在已过时,所以如果您在那里浪费时间有最新版本的传单。
要根据缩放范围隐藏工具提示,请参阅引用此 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;
})
Run Code Online (Sandbox Code Playgroud)
编辑:另外,请参阅此 StackOverflow 问题。
| 归档时间: |
|
| 查看次数: |
8528 次 |
| 最近记录: |