在Leaflet中达到最大边界后禁用拖动

时间:2014-09-09 09:50:02

标签: javascript leaflet

我正在使用自定义图像处理Leaflet,其图块使用“zoomify”生成。我目前正面临以下问题:

1)在最小缩放级别上,图像不应该是可拖动的,这是使用map.dragging.disable()实现的。

但是当图像当前处于最大缩放级别并且用户正在拖动时会出现问题,因为我不希望焦点超出图块,即用户在到达时不应该看到“灰色边框”超出界限。是否可以使用Leaflet。例如,用户拖动图像,一旦开始出现灰色边框,拖动就会被禁用。虽然它确实通过设置bounceAtZoomLimits: falsemap.fitBounds()返回到当前位置,但这仅在用户结束拖动时才会显示。

enter image description here

2)在Pinch缩放时,用户可以尽可能多地放大/缩小。因此,图像可以收缩与用户捏缩放IN以及捏缩放OUT一样多。是否可以停止此行为,即用户只能将缩放IN缩放到最大缩放级别设置以及将缩放OUT缩放到最小缩放级别设置?

任何帮助将不胜感激。谢谢:)

2 个答案:

答案 0 :(得分:5)

传单在拖动后仅检查边界。您需要添加拖动过程侦听器以修复操作中的切片图层位置:

map.setMaxBounds(bounds);
map.on('drag', function() {
    map.panInsideBounds(bounds, { animate: false });
});

示例:http://jsfiddle.net/asleepwalker/exqar2w4/

UPD :我写了一个小插件来执行它。这是:https://github.com/asleepwalker/leaflet.hardbounds

答案 1 :(得分:1)

已经回答here

在Leaflet 1.0.0 +中,有一个选项maxBoundsViscosity到"减慢地图拖动"或使#34;界限完全稳固"。