Changeset 3035


Ignore:
Timestamp:
Apr 9, 2007 8:00:10 AM (9 years ago)
Author:
euzuro
Message:

fix for #643. layer class can be safely doubled up now

File:
1 edited

Legend:

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

    r3023 r3035  
    149149     */
    150150    initialize: function(name, options) {
    151         //store a copy of the custom options for later cloning
    152         this.options = OpenLayers.Util.extend(new Object(), options);
    153        
    154         //add options to layer
    155         OpenLayers.Util.extend(this, this.options);
     151
     152        this.addOptions(options);
    156153
    157154        this.name = name;
    158155       
    159         this.id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_");
    160                
    161         if (this.div == null) {
     156        if (this.id == null) {
     157
     158            this.id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_");
     159
    162160            this.div = OpenLayers.Util.createDiv();
    163161            this.div.style.width = "100%";
    164162            this.div.style.height = "100%";
    165163            this.div.id = this.id;
    166         }
    167 
    168         this.events = new OpenLayers.Events(this, this.div, this.EVENT_TYPES);
     164
     165            this.events = new OpenLayers.Events(this, this.div,
     166                                                this.EVENT_TYPES);
     167        }
    169168    },
    170169   
     
    188187        this.div = null;
    189188        this.options = null;
    190        
     189
    191190        if (this.events) {
    192191            this.events.destroy();
     
    219218     */
    220219    setName: function(newName) {
    221         this.name = newName;
    222         if (this.map != null)
    223             this.map.events.triggerEvent("changelayer");
     220        if (newName != this.name) {
     221            this.name = newName;
     222            if (this.map != null) {
     223                this.map.events.triggerEvent("changelayer");
     224            }
     225        }
    224226    },   
    225227   
     
    229231    addOptions: function (newOptions) {
    230232       
     233        if (this.options == null) {
     234            this.options = new Object();
     235        }
     236       
    231237        // update our copy for clone
    232238        OpenLayers.Util.extend(this.options, newOptions);
     
    267273     */
    268274    setMap: function(map) {
    269         this.map = map;
    270        
    271         // grab some essential layer data from the map if it hasn't already
    272         //  been set
    273         this.maxExtent = this.maxExtent || this.map.maxExtent;
    274         this.projection = this.projection || this.map.projection;
    275         this.units = this.units || this.map.units;
    276        
    277         this.initResolutions();
    278        
    279         if (!this.isBaseLayer) {
    280             this.inRange = this.calculateInRange();
    281         }
    282        
    283         // deal with gutters
    284         this.setTileSize();
     275        if (this.map == null) {
     276       
     277            this.map = map;
     278           
     279            // grab some essential layer data from the map if it hasn't already
     280            //  been set
     281            this.maxExtent = this.maxExtent || this.map.maxExtent;
     282            this.projection = this.projection || this.map.projection;
     283            this.units = this.units || this.map.units;
     284           
     285            this.initResolutions();
     286           
     287            if (!this.isBaseLayer) {
     288                this.inRange = this.calculateInRange();
     289            }
     290           
     291            // deal with gutters
     292            this.setTileSize();
     293        }
    285294    },
    286295 
     
    381390     */
    382391    setIsBaseLayer: function(isBaseLayer) {
    383         this.isBaseLayer = isBaseLayer;
    384         if (this.map != null) {
    385             this.map.events.triggerEvent("changelayer");
     392        if (isBaseLayer != this.isBaseLayer) {
     393            this.isBaseLayer = isBaseLayer;
     394            if (this.map != null) {
     395                this.map.events.triggerEvent("changelayer");
     396            }
    386397        }
    387398    },
     
    649660     */
    650661    setOpacity: function(opacity) {
    651         this.opacity = opacity;
    652         for(var i=0; i<this.div.childNodes.length; ++i) {
    653             var element = this.div.childNodes[i].firstChild;
    654             OpenLayers.Util.modifyDOMElement(element, null, null, null,
    655                                              null, null, null, opacity);
     662        if (opacity != this.opacity) {
     663            this.opacity = opacity;
     664            for(var i=0; i<this.div.childNodes.length; ++i) {
     665                var element = this.div.childNodes[i].firstChild;
     666                OpenLayers.Util.modifyDOMElement(element, null, null, null,
     667                                                 null, null, null, opacity);
     668            }
    656669        }
    657670    },
Note: See TracChangeset for help on using the changeset viewer.