Javascript 如何在传单中设置可能的缩放级别范围
我在传单地图上有3个图层,它们是否显示取决于缩放级别 我只想设置3个可能的缩放级别:例如,当用户单击按钮进行放大时,它将从缩放1变为缩放4(不经过缩放2和3)Javascript 如何在传单中设置可能的缩放级别范围,javascript,leaflet,Javascript,Leaflet,我在传单地图上有3个图层,它们是否显示取决于缩放级别 我只想设置3个可能的缩放级别:例如,当用户单击按钮进行放大时,它将从缩放1变为缩放4(不经过缩放2和3) 可以这样做吗?限制缩放级别的一种方法是覆盖地图上用于处理所有缩放级别更改的方法。当检测到传递的缩放级别无效时,覆盖将设置授权的缩放级别 比如说, var map = L.map('map').setView([48.864, 2.345], 4); L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/
可以这样做吗?限制缩放级别的一种方法是覆盖地图上用于处理所有缩放级别更改的方法。当检测到传递的缩放级别无效时,覆盖将设置授权的缩放级别 比如说,
var map = L.map('map').setView([48.864, 2.345], 4);
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
// allowed zoom levels
var allowZooms = [4, 8, 12];
map.setView = function(center, zoom, options) {
// tests if the requested zoom is allowed
if ((zoom) && (allowZooms.indexOf(zoom) === -1)) {
// this._zoom is an internal value used to reference the current zoom level
var ixCurZoom = allowZooms.indexOf(this._zoom);
// are we zooming in or out?
var dir = (zoom > this._zoom) ? 1 : -1;
// pick the previous/next zoom
if (allowZooms[ixCurZoom + dir]) {
zoom = allowZooms[ixCurZoom + dir];
} else {
// or abort the zoom if we're out of bounds
return this;
}
}
// call the parent method
return L.Map.prototype.setView.call(this, center, zoom, options);
}
如果地图上的zoomend
事件无效,您可以在地图上挂起该事件,并强制执行新的缩放级别。您需要跟踪缩放级别的移动方向。谢谢!这太棒了。