diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index 3b12280895..39de0da4ea 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -350,15 +350,16 @@ OpenLayers.Map.prototype = { * @param {Boolean} noEvent */ setBaseLayer: function(newBaseLayer, noEvent) { + var oldBaseLayer = this.baseLayer; - if (newBaseLayer != this.baseLayer) { + if (newBaseLayer != oldBaseLayer) { // is newBaseLayer an already loaded layer? if (this.layers.indexOf(newBaseLayer) != -1) { // make the old base layer invisible - if (this.baseLayer != null) { - this.baseLayer.setVisibility(false, noEvent); + if (oldBaseLayer != null) { + oldBaseLayer.setVisibility(false, noEvent); } // set new baselayer and make it visible @@ -368,13 +369,9 @@ OpenLayers.Map.prototype = { //redraw all layers var center = this.getCenter(); if (center != null) { - var zoom = this.getZoom(); - this.zoom = null; - if (zoom > this.baseLayer.numZoomLevels - 1) { - zoom = this.baseLayer.numZoomLevels - 1; - } + var oldResolution = oldBaseLayer.getResolution(); + var zoom = this.baseLayer.getZoomForResolution(oldResolution); this.setCenter(center, zoom); - } if ((noEvent == null) || (noEvent == false)) { this.events.triggerEvent("changebaselayer");