diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index 92f5a02da5..e7910548a9 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -1469,15 +1469,13 @@ OpenLayers.Map = OpenLayers.Class({ } if ((center != null) && (resolution != null)) { - - var size = this.getSize(); - var w_deg = size.w * resolution; - var h_deg = size.h * resolution; + var half_w_deg = (this.size.w * resolution) / 2; + var half_h_deg = (this.size.h * resolution) / 2; - extent = new OpenLayers.Bounds(center.lon - w_deg / 2, - center.lat - h_deg / 2, - center.lon + w_deg / 2, - center.lat + h_deg / 2); + extent = new OpenLayers.Bounds(center.lon - half_w_deg, + center.lat - half_h_deg, + center.lon + half_w_deg, + center.lat + half_h_deg); } @@ -2318,15 +2316,15 @@ OpenLayers.Map = OpenLayers.Class({ zoomToScale: function(scale, closest) { var res = OpenLayers.Util.getResolutionFromScale(scale, this.baseLayer.units); - var size = this.getSize(); - var w_deg = size.w * res; - var h_deg = size.h * res; + + var half_w_deg = (this.size.w * res) / 2; + var half_h_deg = (this.size.h * res) / 2; var center = this.getCachedCenter(); - var extent = new OpenLayers.Bounds(center.lon - w_deg / 2, - center.lat - h_deg / 2, - center.lon + w_deg / 2, - center.lat + h_deg / 2); + var extent = new OpenLayers.Bounds(center.lon - half_w_deg, + center.lat - half_h_deg, + center.lon + half_w_deg, + center.lat + half_h_deg); this.zoomToExtent(extent, closest); }, diff --git a/tests/Map.html b/tests/Map.html index faad0b30c7..2401ae21d6 100644 --- a/tests/Map.html +++ b/tests/Map.html @@ -1406,6 +1406,7 @@ var m = { 'baseLayer': { 'units': {} }, + 'size': {'w': 10, 'h': 15}, 'getSize': function() { return {'w': 10, 'h': 15}; }, 'getCachedCenter': function() { return {'lon': -5, 'lat': -25}; }, 'zoomToExtent': function(extent, closest) {