首页 / Leaflet / 使用示例
边界限制
把地图锁在一块矩形范围内,拖到边缘会停住,飞到范围外的城市会被钳回边界。
源码与运行效果
说明
maxBounds 限制的是地图中心点,而不是四角。起点定在
L.latLngBounds([[39.85, 116.28], [39.97, 116.52]]),
maxBoundsViscosity: 0.9 让拖动时出现明显阻力,
松手后不会弹回太远;取 0 时可以从边缘自由拖出去再回弹,取 1 则完全拖不动。
关闭限制用 map.setMaxBounds(null),重新开启时传回同一个
LatLngBounds 即可,无需重建地图。开启状态下调用
flyTo 飞往上海,动画终点会越界,moveend 时
_panInsideMaxBounds 立即把中心校正回边界,状态栏随之显示「已贴住边界」。
| 选项 / 方法 | 取值 | 效果 |
|---|---|---|
maxBounds | LatLngBounds | 允许中心点移动的矩形范围 |
maxBoundsViscosity | 0.9 | 越界拖拽的阻力,1 为完全锁定 |
setMaxBounds(null) | — | 取消限制,立即生效 |
minZoom / maxZoom | 10 / 15 | 防止缩小后整块范围只剩一个小点 |
flyToBounds | 加 padding | 把范围适配进视野,边界不会被裁掉 |
限制范围小于一屏时,无论怎么设置都会露出范围外的底图。此时应同时限制
minZoom,让最小级别下的一屏不超过范围,否则边缘会出现空白或灰底。