diff --git a/lib/OpenLayers/Control/PanZoomBar.js b/lib/OpenLayers/Control/PanZoomBar.js index 290cb6ea6b..3222a86630 100644 --- a/lib/OpenLayers/Control/PanZoomBar.js +++ b/lib/OpenLayers/Control/PanZoomBar.js @@ -58,6 +58,13 @@ OpenLayers.Control.PanZoomBar = OpenLayers.Class(OpenLayers.Control.PanZoom, { */ zoomWorldIcon: false, + /** + * APIProperty: forceFixedZoomLevel + * {Boolean} Force a fixed zoom level even though the map has + * fractionalZoom + */ + forceFixedZoomLevel: false, + /** * Constructor: OpenLayers.Control.PanZoomBar */ @@ -266,7 +273,7 @@ OpenLayers.Control.PanZoomBar = OpenLayers.Class(OpenLayers.Control.PanZoom, { var y = evt.xy.y; var top = OpenLayers.Util.pagePosition(evt.object)[1]; var levels = (y - top)/this.zoomStopHeight; - if(!this.map.fractionalZoom) { + if(this.forceFixedZoomLevel || !this.map.fractionalZoom) { levels = Math.floor(levels); } var zoom = (this.map.getNumZoomLevels() - 1) - levels; @@ -344,7 +351,7 @@ OpenLayers.Control.PanZoomBar = OpenLayers.Class(OpenLayers.Control.PanZoom, { }); var deltaY = this.zoomStart.y - evt.xy.y; var zoomLevel = this.map.zoom; - if (this.map.fractionalZoom) { + if (!this.forceFixedZoomLevel && this.map.fractionalZoom) { zoomLevel += deltaY/this.zoomStopHeight; zoomLevel = Math.min(Math.max(zoomLevel, 0), this.map.getNumZoomLevels() - 1); diff --git a/tests/Control/PanZoomBar.html b/tests/Control/PanZoomBar.html index e93d6cceaa..9590dd08b1 100644 --- a/tests/Control/PanZoomBar.html +++ b/tests/Control/PanZoomBar.html @@ -2,20 +2,20 @@