OpenLayers OpenLayers

Changeset 1581

Show
Ignore:
Timestamp:
10/05/06 01:06:33 (2 years ago)
Author:
euzuro
Message:

fix for #182 and #262 -- pick the best new resolution when changing baselayers, instead of just using the same index into the resolutions array.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/openlayers/lib/OpenLayers/Map.js

    r1577 r1581  
    351351     */ 
    352352    setBaseLayer: function(newBaseLayer, noEvent) { 
    353  
    354         if (newBaseLayer != this.baseLayer) { 
     353        var oldBaseLayer = this.baseLayer; 
     354 
     355        if (newBaseLayer != oldBaseLayer) { 
    355356           
    356357            // is newBaseLayer an already loaded layer? 
     
    358359 
    359360                // make the old base layer invisible  
    360                 if (this.baseLayer != null) { 
    361                     this.baseLayer.setVisibility(false, noEvent); 
     361                if (oldBaseLayer != null) { 
     362                    oldBaseLayer.setVisibility(false, noEvent); 
    362363                } 
    363364 
     
    369370                var center = this.getCenter(); 
    370371                if (center != null) { 
    371                     var zoom = this.getZoom(); 
    372                     this.zoom = null; 
    373                     if (zoom > this.baseLayer.numZoomLevels - 1) { 
    374                         zoom = this.baseLayer.numZoomLevels - 1; 
    375                     }     
     372                    var oldResolution = oldBaseLayer.getResolution(); 
     373                    var zoom = this.baseLayer.getZoomForResolution(oldResolution); 
    376374                    this.setCenter(center, zoom);             
    377                  
    378375                } 
    379376                if ((noEvent == null) || (noEvent == false)) {