经纬志
首页 / Leaflet / 使用示例

边界限制

把地图锁在一块矩形范围内,拖到边缘会停住,飞到范围外的城市会被钳回边界。

Leaflet 1.9.4 · 更新 2026-10-28
源码与运行效果
运行效果

说明

maxBounds 限制的是地图中心点,而不是四角。起点定在 L.latLngBounds([[39.85, 116.28], [39.97, 116.52]]), maxBoundsViscosity: 0.9 让拖动时出现明显阻力, 松手后不会弹回太远;取 0 时可以从边缘自由拖出去再回弹,取 1 则完全拖不动。

关闭限制用 map.setMaxBounds(null),重新开启时传回同一个 LatLngBounds 即可,无需重建地图。开启状态下调用 flyTo 飞往上海,动画终点会越界,moveend 时 _panInsideMaxBounds 立即把中心校正回边界,状态栏随之显示「已贴住边界」。

选项 / 方法取值效果
maxBoundsLatLngBounds允许中心点移动的矩形范围
maxBoundsViscosity0.9越界拖拽的阻力,1 为完全锁定
setMaxBounds(null)—取消限制,立即生效
minZoom / maxZoom10 / 15防止缩小后整块范围只剩一个小点
flyToBounds加 padding把范围适配进视野,边界不会被裁掉

限制范围小于一屏时,无论怎么设置都会露出范围外的底图。此时应同时限制 minZoom,让最小级别下的一屏不超过范围,否则边缘会出现空白或灰底。