diff --git a/examples/example.html b/examples/example.html index b9e98cdf7c..38263a4b6c 100644 --- a/examples/example.html +++ b/examples/example.html @@ -24,7 +24,8 @@ "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap", {layers: "bathymetry,land_fn,park,drain_fn,drainage," + "prov_bound,fedlimit,rail,road,popplace", - transparent: "true", format: "image/png" }); + transparent: "true", format: "image/png" }, + { displayInLayerSwitcher: false }); map.addLayers([ol_wms, jpl_wms, dm_wms]); map.addControl(new OpenLayers.Control.LayerSwitcher()); diff --git a/lib/OpenLayers/Control/LayerSwitcher.js b/lib/OpenLayers/Control/LayerSwitcher.js index 89453e90bb..93ccd1c537 100644 --- a/lib/OpenLayers/Control/LayerSwitcher.js +++ b/lib/OpenLayers/Control/LayerSwitcher.js @@ -103,49 +103,51 @@ OpenLayers.Control.LayerSwitcher.prototype = var layer = this.map.layers[i]; var baseLayer = layer.isBaseLayer; - if (!baseLayer) { - containsOverlays = true; + if (baseLayer || layer.displayInLayerSwitcher) { + + if (!baseLayer) { + containsOverlays = true; + } + + // only check a baselayer if it is *the* baselayer, check data + // layers if they are visible + var checked = (baseLayer) ? (layer == this.map.baseLayer) + : layer.getVisibility(); + + // create input element + var inputElem = document.createElement("input"); + inputElem.id = "input_" + layer.name; + inputElem.name = (baseLayer) ? "baseLayers" : layer.name; + inputElem.type = (baseLayer) ? "radio" : "checkbox"; + inputElem.value = layer.name; + inputElem.checked = checked; + inputElem.defaultChecked = checked; + inputElem.layer = layer; + inputElem.control = this; + Event.observe(inputElem, "mouseup", + this.onInputClick.bindAsEventListener(inputElem)); + + // create span + var labelSpan = document.createElement("span"); + labelSpan.innerHTML = layer.name; + labelSpan.style.verticalAlign = (baseLayer) ? "bottom" : "baseline"; + Event.observe(labelSpan, "click", + this.onInputClick.bindAsEventListener(inputElem)); + // create line break + var br = document.createElement("br"); + + + var groupArray = (baseLayer) ? this.baseLayerInputs + : this.dataLayerInputs; + groupArray.push(inputElem); + + + var groupDiv = (baseLayer) ? this.baseLayersDiv + : this.dataLayersDiv; + groupDiv.appendChild(inputElem); + groupDiv.appendChild(labelSpan); + groupDiv.appendChild(br); } - - // only check a baselayer if it is *the* baselayer, check data - // layers if they are visible - var checked = (baseLayer) ? (layer == this.map.baseLayer) - : layer.getVisibility(); - - // create input element - var inputElem = document.createElement("input"); - inputElem.id = "input_" + layer.name; - inputElem.name = (baseLayer) ? "baseLayers" : layer.name; - inputElem.type = (baseLayer) ? "radio" : "checkbox"; - inputElem.value = layer.name; - inputElem.checked = checked; - inputElem.defaultChecked = checked; - inputElem.layer = layer; - inputElem.control = this; - Event.observe(inputElem, "mouseup", - this.onInputClick.bindAsEventListener(inputElem)); - - // create span - var labelSpan = document.createElement("span"); - labelSpan.innerHTML = layer.name; - labelSpan.style.verticalAlign = (baseLayer) ? "bottom" : "baseline"; - Event.observe(labelSpan, "click", - this.onInputClick.bindAsEventListener(inputElem)); - // create line break - var br = document.createElement("br"); - - - var groupArray = (baseLayer) ? this.baseLayerInputs - : this.dataLayerInputs; - groupArray.push(inputElem); - - - var groupDiv = (baseLayer) ? this.baseLayersDiv - : this.dataLayersDiv; - groupDiv.appendChild(inputElem); - groupDiv.appendChild(labelSpan); - groupDiv.appendChild(br); - } // if no overlays, dont display the overlay label diff --git a/lib/OpenLayers/Layer.js b/lib/OpenLayers/Layer.js index 543112ffe9..59481ee0f0 100644 --- a/lib/OpenLayers/Layer.js +++ b/lib/OpenLayers/Layer.js @@ -36,6 +36,11 @@ OpenLayers.Layer.prototype = { * @type boolean */ alpha: false, + /** should the layer's name appear in the layer switcher? + * + * @type boolean */ + displayInLayerSwitcher: true, + // OPTIONS /** @type Array */