OpenLayers OpenLayers

Changeset 2233

Show
Ignore:
Timestamp:
02/16/07 15:59:18 (2 years ago)
Author:
euzuro
Message:

fix for #500 - destroying a layer now has an option to not set a new baselayer. we use this in map.destroy()

Files:

Legend:

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

    r2227 r2233  
    138138     * Destroy is a destructor: this is to alleviate cyclic references which 
    139139     * the Javascript garbage cleaner can not take care of on its own. 
    140      */ 
    141     destroy: function() { 
     140     *  
     141     * @param {Boolean} setNewBaseLayer Should a new baselayer be selected when 
     142     *                                  this has been removed? 
     143     *                                  Default is true 
     144     */ 
     145    destroy: function(setNewBaseLayer) { 
     146        if (setNewBaseLayer == null) { 
     147            setNewBaseLayer = true; 
     148        } 
    142149        if (this.map != null) { 
    143             this.map.removeLayer(this); 
     150            this.map.removeLayer(this, setNewBaseLayer); 
    144151        } 
    145152        this.map = null; 
  • trunk/openlayers/lib/OpenLayers/Map.js

    r2231 r2233  
    214214        if (this.layers != null) { 
    215215            for(var i=0; i< this.layers.length; i++) { 
    216                 this.layers[i].destroy(); 
     216                //pass 'false' to destroy so that map wont try to set a new  
     217                // baselayer after each baselayer is removed 
     218                this.layers[i].destroy(false); 
    217219            }  
    218220            this.layers = null; 
     
    357359     *  
    358360     * @param {OpenLayers.Layer} layer 
    359      */ 
    360     removeLayer: function(layer) { 
     361     * @param {Boolean} setNewBaseLayer Default is true 
     362     */ 
     363    removeLayer: function(layer, setNewBaseLayer) { 
     364        if (setNewBaseLayer == null) { 
     365            setNewBaseLayer = true; 
     366        } 
     367 
    361368        if (layer.isFixed) { 
    362369            this.viewPortDiv.removeChild(layer.div); 
     
    368375 
    369376        // if we removed the base layer, need to set a new one 
    370         if (this.baseLayer == layer) { 
     377        if (setNewBaseLayer && (this.baseLayer == layer)) { 
    371378            this.baseLayer = null; 
    372379            for(i=0; i < this.layers.length; i++) {