OpenLayers OpenLayers

Changeset 1528

Show
Ignore:
Timestamp:
10/02/06 19:24:02 (2 years ago)
Author:
euzuro
Message:

allow layers to prevent themselves from displaying in the layer switcher via the 'displayInLayerSwitcher' boolean option. modify example.html to show usage

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/openlayers/examples/example.html

    r1424 r1528  
    2525                {layers: "bathymetry,land_fn,park,drain_fn,drainage," + 
    2626                         "prov_bound,fedlimit,rail,road,popplace", 
    27                  transparent: "true", format: "image/png" }); 
     27                 transparent: "true", format: "image/png" }, 
     28                 { displayInLayerSwitcher: false }); 
    2829 
    2930            map.addLayers([ol_wms, jpl_wms, dm_wms]); 
  • trunk/openlayers/lib/OpenLayers/Control/LayerSwitcher.js

    r1424 r1528  
    104104            var baseLayer = layer.isBaseLayer; 
    105105 
    106             if (!baseLayer) { 
    107                 containsOverlays = true; 
     106            if (baseLayer || layer.displayInLayerSwitcher) { 
     107 
     108                if (!baseLayer) { 
     109                    containsOverlays = true; 
     110                } 
     111 
     112                // only check a baselayer if it is *the* baselayer, check data 
     113                //  layers if they are visible 
     114                var checked = (baseLayer) ? (layer == this.map.baseLayer) 
     115                                          : layer.getVisibility(); 
     116     
     117                // create input element 
     118                var inputElem = document.createElement("input"); 
     119                inputElem.id = "input_" + layer.name; 
     120                inputElem.name = (baseLayer) ? "baseLayers" : layer.name; 
     121                inputElem.type = (baseLayer) ? "radio" : "checkbox"; 
     122                inputElem.value = layer.name; 
     123                inputElem.checked = checked; 
     124                inputElem.defaultChecked = checked; 
     125                inputElem.layer = layer; 
     126                inputElem.control = this; 
     127                Event.observe(inputElem, "mouseup",  
     128                              this.onInputClick.bindAsEventListener(inputElem)); 
     129                 
     130                // create span 
     131                var labelSpan = document.createElement("span"); 
     132                labelSpan.innerHTML = layer.name; 
     133                labelSpan.style.verticalAlign = (baseLayer) ? "bottom" : "baseline"; 
     134                Event.observe(labelSpan, "click",  
     135                              this.onInputClick.bindAsEventListener(inputElem)); 
     136                // create line break 
     137                var br = document.createElement("br"); 
     138     
     139                 
     140                var groupArray = (baseLayer) ? this.baseLayerInputs 
     141                                             : this.dataLayerInputs; 
     142                groupArray.push(inputElem); 
     143                                                      
     144     
     145                var groupDiv = (baseLayer) ? this.baseLayersDiv 
     146                                           : this.dataLayersDiv; 
     147                groupDiv.appendChild(inputElem); 
     148                groupDiv.appendChild(labelSpan); 
     149                groupDiv.appendChild(br); 
    108150            } 
    109  
    110             // only check a baselayer if it is *the* baselayer, check data 
    111             //  layers if they are visible 
    112             var checked = (baseLayer) ? (layer == this.map.baseLayer) 
    113                                       : layer.getVisibility(); 
    114  
    115             // create input element 
    116             var inputElem = document.createElement("input"); 
    117             inputElem.id = "input_" + layer.name; 
    118             inputElem.name = (baseLayer) ? "baseLayers" : layer.name; 
    119             inputElem.type = (baseLayer) ? "radio" : "checkbox"; 
    120             inputElem.value = layer.name; 
    121             inputElem.checked = checked; 
    122             inputElem.defaultChecked = checked; 
    123             inputElem.layer = layer; 
    124             inputElem.control = this; 
    125             Event.observe(inputElem, "mouseup",  
    126                           this.onInputClick.bindAsEventListener(inputElem)); 
    127              
    128             // create span 
    129             var labelSpan = document.createElement("span"); 
    130             labelSpan.innerHTML = layer.name; 
    131             labelSpan.style.verticalAlign = (baseLayer) ? "bottom" : "baseline"; 
    132             Event.observe(labelSpan, "click",  
    133                           this.onInputClick.bindAsEventListener(inputElem)); 
    134             // create line break 
    135             var br = document.createElement("br"); 
    136  
    137              
    138             var groupArray = (baseLayer) ? this.baseLayerInputs 
    139                                          : this.dataLayerInputs; 
    140             groupArray.push(inputElem); 
    141                                                   
    142  
    143             var groupDiv = (baseLayer) ? this.baseLayersDiv 
    144                                        : this.dataLayersDiv; 
    145             groupDiv.appendChild(inputElem); 
    146             groupDiv.appendChild(labelSpan); 
    147             groupDiv.appendChild(br); 
    148  
    149151        } 
    150152 
  • trunk/openlayers/lib/OpenLayers/Layer.js

    r1527 r1528  
    3636     * @type boolean */ 
    3737    alpha: false, 
     38 
     39    /** should the layer's name appear in the layer switcher? 
     40     *  
     41     * @type boolean */ 
     42    displayInLayerSwitcher: true, 
    3843 
    3944  // OPTIONS