[OpenLayers-Users] Customized LayerSwitcher

Dave Siegel desiegel at gmail.com
Tue Nov 25 09:27:49 EST 2008


All -
I'm trying to modify the custom LayerSwitcher provided by Semantica:
http://n2.nabble.com/Layer-selection-in-LayerSwitcher-td789021.html#a790967
This LayerSwitcher customization is very cool and I am trying to modify it
to load layers without using WMC. However, I have an invalid layer parameter
(or another missing parameter) that I cannot fix. Can anyone help? I've
merged this code with the WMC example as a start but am not getting too far.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="
http://www.w3.org/1999/xhtml"> <head> <meta content="text/html;
charset=utf-8" http-equiv="Content-Type" /> <title>OpenLayers - Custom Layer
Switcher</title> <style type="text/css"> body { font-family: Arial,
Helvetica, sans-serif; font-size: 80% } #map { font-size: small; border: 1px
solid #ccc; } p { margin: 0; } </style> <script type="text/javascript"
src="../lib/OpenLayers.js"></script> <script type="text/javascript">
OpenLayers.IMAGE_RELOAD_ATTEMPTS = 2; OpenLayers.Util.onImageLoadErrorColor
= "transparent"; var format = new OpenLayers.Format.WMC({'layerOptions':
{buffer: 0}}); var doc, context, map, layerSwitcher; //var layerOptions = {
// isBaseLayer: false, // singleTile: true, // buffer: 0, // ratio: 1 //};
function init() { var options = { maxExtent: new OpenLayers.Bounds(-130, 14,
-60, 55) }; map = new OpenLayers.Map("map", options); var jpl = new
OpenLayers.Layer.WMS( "NASA Global Mosaic", "
http://t1.hypercube.telascience.org/cgi-bin/landsat7", {layers: "landsat7",
transparent: "TRUE"}, { isBaseLayer: false, maxExtent: new
OpenLayers.Bounds(-130, 14, -60, 55), maxResolution: 0.1,
displayInLayerSwitcher: true, numZoomLevels: 4, minResolution: 0.02 } ); var
vmap = new OpenLayers.Layer.WMS( "OpenLayers WMS", "
http://labs.metacarta.com/wms/vmap0", {layers: "basic"}, { isBaseLayer:
false, maxExtent: new OpenLayers.Bounds(-130, 14, -60, 55),
displayInLayerSwitcher: true, maxResolution: 0.1, numZoomLevels: 4,
minResolution: 0.02 } ); var roads = new OpenLayers.Layer.WMS(
"Transportation Network", "http://lioapp.lrc.gov.on.ca/cubeserv/cubeserv.pl",
{layers: "na_road:CCRS"}, { isBaseLayer: false, maxExtent: new
OpenLayers.Bounds( -166.532, 4.05046, -0.206818, 70.287 ),
displayInLayerSwitcher: true, opacity: 0.6, minScale: 32000000,
numZoomLevels: 4, maxScale: 6200000 } ); var nexrad = new
OpenLayers.Layer.WMS( "Radar 3:1", "
http://columbo.nrlssc.navy.mil/ogcwms/servlet/WMSServlet/AccuWeather_Maps.wms",
{layers: "3:1"}, { isBaseLayer: false, maxExtent: new OpenLayers.Bounds(
-131.029495239, 14.5628967285, -61.0295028687, 54.562896728 ), opacity: 0.8,
singleTile: true, visibility: true, maxResolution: 0.1, numZoomLevels: 4,
minResolution: 0.02 } ); // create a fake base layer var baseLayerOptions =
{ isBaseLayer: true, displayInLayerSwitcher: false }; var fake = new
OpenLayers.Layer('fake', baseLayerOptions); map.addLayer(fake);
map.addLayers([jpl, vmap, roads, nexrad]); // add the LayerSwitcher (a.k.a.
Map Legend) layerSwitcher = new OpenLayers.Control.LayerSwitcher();
layerSwitcher.ascending = false; map.addControl(layerSwitcher);
layerSwitcher.getLegendGraphics(false); map.setCenter(new
OpenLayers.LonLat(-95, 34.5), 1); // create a new event handler for single
click query var clickEventHandler = new OpenLayers.Handler.Click({ 'map':
map }, { 'click': function(e) { doGetFeatureInfo(e); } });
clickEventHandler.activate(); }; function readWMC(merge) { //var text =
document.getElementById("wmc").value; var text =
document.getElementById('hidWMC').value if(merge) { try { map =
format.read(text, {map: map}); } catch(err) {
document.getElementById("wmc").value = err; } } else { map.destroy(); try {
map = format.read(text, {map: "map"}); map.addControl(new
OpenLayers.Control.LayerSwitcher()); } catch(err) {
document.getElementById("wmc").value = err; } } } function
doGetFeatureInfo(evt) { var layerId = layerSwitcher.activeLayer; if(evt) {
var activeLayer = map.getLayer(layerId); if(activeLayer) { var url =
activeLayer.getFullRequestString({ REQUEST: "GetFeatureInfo", EXCEPTIONS:
"application/vnd.ogc.se_xml", BBOX: activeLayer.map.getExtent().toBBOX(), X:
evt.xy.x, Y: evt.xy.y, INFO_FORMAT: 'text/html', QUERY_LAYERS:
activeLayer.params.LAYERS, WIDTH: activeLayer.map.size.w, HEIGHT:
activeLayer.map.size.h}); var popupWindow = window.open(url,
"GetFeatureInfo",
"width=550,height=350,status=yes,scrollbars=yes,resizable=yes");
if(popupWindow) { popupWindow.focus(); } else { return true; }
OpenLayers.Event.stop(evt); } } } </script> </head> <body onload="init()">
<h2>Extended Layer Switcher</h2> <p>This is a demonstration of a custom
layer switcher that allows users to control layer opacity, layer position,
layer visibility and layer selection (for querying). </p> <hr /> <div
id="map" style="width: 750px; height: 500px;"></div> </body> </html>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-users/attachments/20081125/27ec8b1d/attachment.html


More information about the Users mailing list