Commiting fix for #716, "Make LayerSwitcher support displayInLayerSwitcher
for Base Layers", reviewed by Erik, tested by tschaub. git-svn-id: http://svn.openlayers.org/trunk/openlayers@3853 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -17,11 +17,11 @@
|
|||||||
|
|
||||||
var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
|
var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
|
||||||
"http://labs.metacarta.com/wms/vmap0",
|
"http://labs.metacarta.com/wms/vmap0",
|
||||||
{layers: 'basic'} );
|
{layers: 'basic'}, {'displayInLayerSwitcher':false} );
|
||||||
|
|
||||||
var jpl_wms = new OpenLayers.Layer.WMS( "NASA Global Mosaic",
|
var jpl_wms = new OpenLayers.Layer.WMS( "NASA Global Mosaic",
|
||||||
"http://wms.jpl.nasa.gov/wms.cgi",
|
"http://wms.jpl.nasa.gov/wms.cgi",
|
||||||
{layers: "modis,global_mosaic"});
|
{layers: "modis,global_mosaic"}, {'isBaseLayer': false});
|
||||||
|
|
||||||
var dm_wms = new OpenLayers.Layer.WMS( "DM Solutions Demo",
|
var dm_wms = new OpenLayers.Layer.WMS( "DM Solutions Demo",
|
||||||
"http://www2.dmsolutions.ca/cgi-bin/mswms_gmap",
|
"http://www2.dmsolutions.ca/cgi-bin/mswms_gmap",
|
||||||
@@ -42,5 +42,10 @@
|
|||||||
<h1>OpenLayers Example</h1>
|
<h1>OpenLayers Example</h1>
|
||||||
<div id="layerswitcher" style="float:right; width: 20em;"></div>
|
<div id="layerswitcher" style="float:right; width: 20em;"></div>
|
||||||
<div id="map"></div>
|
<div id="map"></div>
|
||||||
|
<div id="docs">
|
||||||
|
<p>This demonstrates use of the LayerSwitcher outside the map div. It also shows use
|
||||||
|
of the displayInLayerSwitcher option on the Layer to cause it to not display in the
|
||||||
|
LayerSwitcher.</p>
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -185,6 +185,7 @@ OpenLayers.Control.LayerSwitcher = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
this.clearLayersArray("data");
|
this.clearLayersArray("data");
|
||||||
|
|
||||||
var containsOverlays = false;
|
var containsOverlays = false;
|
||||||
|
var containsBaseLayers = false;
|
||||||
|
|
||||||
var layers = this.map.layers.slice();
|
var layers = this.map.layers.slice();
|
||||||
if (!this.ascending) { layers.reverse(); }
|
if (!this.ascending) { layers.reverse(); }
|
||||||
@@ -192,9 +193,11 @@ OpenLayers.Control.LayerSwitcher = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
var layer = layers[i];
|
var layer = layers[i];
|
||||||
var baseLayer = layer.isBaseLayer;
|
var baseLayer = layer.isBaseLayer;
|
||||||
|
|
||||||
if (baseLayer || layer.displayInLayerSwitcher) {
|
if (layer.displayInLayerSwitcher) {
|
||||||
|
|
||||||
if (!baseLayer) {
|
if (baseLayer) {
|
||||||
|
containsBaseLayers = true;
|
||||||
|
} else {
|
||||||
containsOverlays = true;
|
containsOverlays = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -257,6 +260,9 @@ OpenLayers.Control.LayerSwitcher = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
// if no overlays, dont display the overlay label
|
// if no overlays, dont display the overlay label
|
||||||
this.dataLbl.style.display = (containsOverlays) ? "" : "none";
|
this.dataLbl.style.display = (containsOverlays) ? "" : "none";
|
||||||
|
|
||||||
|
// if no baselayers, dont display the baselayer label
|
||||||
|
this.baseLbl.style.display = (containsBaseLayers) ? "" : "none";
|
||||||
|
|
||||||
return this.div;
|
return this.div;
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -426,11 +432,11 @@ OpenLayers.Control.LayerSwitcher = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
this.layersDiv.style.height = "100%";
|
this.layersDiv.style.height = "100%";
|
||||||
|
|
||||||
|
|
||||||
var baseLbl = document.createElement("div");
|
this.baseLbl = document.createElement("div");
|
||||||
baseLbl.innerHTML = "<u>Base Layer</u>";
|
this.baseLbl.innerHTML = "<u>Base Layer</u>";
|
||||||
baseLbl.style.marginTop = "3px";
|
this.baseLbl.style.marginTop = "3px";
|
||||||
baseLbl.style.marginLeft = "3px";
|
this.baseLbl.style.marginLeft = "3px";
|
||||||
baseLbl.style.marginBottom = "3px";
|
this.baseLbl.style.marginBottom = "3px";
|
||||||
|
|
||||||
this.baseLayersDiv = document.createElement("div");
|
this.baseLayersDiv = document.createElement("div");
|
||||||
this.baseLayersDiv.style.paddingLeft = "10px";
|
this.baseLayersDiv.style.paddingLeft = "10px";
|
||||||
@@ -449,14 +455,14 @@ OpenLayers.Control.LayerSwitcher = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
this.dataLayersDiv.style.paddingLeft = "10px";
|
this.dataLayersDiv.style.paddingLeft = "10px";
|
||||||
|
|
||||||
if (this.ascending) {
|
if (this.ascending) {
|
||||||
this.layersDiv.appendChild(baseLbl);
|
this.layersDiv.appendChild(this.baseLbl);
|
||||||
this.layersDiv.appendChild(this.baseLayersDiv);
|
this.layersDiv.appendChild(this.baseLayersDiv);
|
||||||
this.layersDiv.appendChild(this.dataLbl);
|
this.layersDiv.appendChild(this.dataLbl);
|
||||||
this.layersDiv.appendChild(this.dataLayersDiv);
|
this.layersDiv.appendChild(this.dataLayersDiv);
|
||||||
} else {
|
} else {
|
||||||
this.layersDiv.appendChild(this.dataLbl);
|
this.layersDiv.appendChild(this.dataLbl);
|
||||||
this.layersDiv.appendChild(this.dataLayersDiv);
|
this.layersDiv.appendChild(this.dataLayersDiv);
|
||||||
this.layersDiv.appendChild(baseLbl);
|
this.layersDiv.appendChild(this.baseLbl);
|
||||||
this.layersDiv.appendChild(this.baseLayersDiv);
|
this.layersDiv.appendChild(this.baseLayersDiv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -116,6 +116,31 @@
|
|||||||
t.ok(control2.div.childNodes[1].childNodes[0].innerHTML.match("Overlays"), "Base Layers last in LayerSwitcher with ascending false");
|
t.ok(control2.div.childNodes[1].childNodes[0].innerHTML.match("Overlays"), "Base Layers last in LayerSwitcher with ascending false");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function test_Control_LayerSwitcher_displayInLayerSwitcher (t) {
|
||||||
|
|
||||||
|
t.plan( 2 );
|
||||||
|
|
||||||
|
map = new OpenLayers.Map('map');
|
||||||
|
var layer = new OpenLayers.Layer.WMS("WMS",
|
||||||
|
"http://octo.metacarta.com/cgi-bin/mapserv?",
|
||||||
|
{map: "/mapdata/vmap_wms.map", layers: "basic"}, {'displayInLayerSwitcher': false});
|
||||||
|
map.addLayer(layer);
|
||||||
|
|
||||||
|
control = new OpenLayers.Control.LayerSwitcher();
|
||||||
|
map.addControl(control);
|
||||||
|
t.eq(control.div.childNodes[1].childNodes[0].style.display, "none" , "Base layer display off when no visble base layer");
|
||||||
|
|
||||||
|
map = new OpenLayers.Map('map');
|
||||||
|
var layer = new OpenLayers.Layer.WMS("WMS",
|
||||||
|
"http://octo.metacarta.com/cgi-bin/mapserv?",
|
||||||
|
{map: "/mapdata/vmap_wms.map", layers: "basic"});
|
||||||
|
map.addLayer(layer);
|
||||||
|
|
||||||
|
control = new OpenLayers.Control.LayerSwitcher();
|
||||||
|
map.addControl(control);
|
||||||
|
t.eq(control.div.childNodes[1].childNodes[0].style.display, "" , "Base layer display on when visble base layer");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// -->
|
// -->
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user