<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-GB link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Hi,<o:p></o:p></p><p class=MsoNormal> I am new to web mapping and I am wondering if anyone can help me explain why my group layer is set to visible and is also added to container node in my layertree even though I thinkI have set the options as to omit the group layer from the overlaycontainernode and visibility set to false.<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>Here is my code:<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> //Create the map object<o:p></o:p></p><p class=MsoNormal> var map = new OpenLayers.Map('map_element',{<o:p></o:p></p><p class=MsoNormal> maxExtent: new OpenLayers.Bounds(<o:p></o:p></p><p class=MsoNormal> -128 * 156543.0339,<o:p></o:p></p><p class=MsoNormal> -128 * 156543.0339,<o:p></o:p></p><p class=MsoNormal> 128 * 156543.0339,<o:p></o:p></p><p class=MsoNormal> 128 * 156543.0339),<o:p></o:p></p><p class=MsoNormal> maxResolution: "auto", <o:p></o:p></p><p class=MsoNormal> units: 'm',<o:p></o:p></p><p class=MsoNormal> projection: 'EPSG:27700',<o:p></o:p></p><p class=MsoNormal> displayProjection: new OpenLayers.Projection("EPSG:27700"), <o:p></o:p></p><p class=MsoNormal> controls:[<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>// Create WFS layer <o:p></o:p></p><p class=MsoNormal>var wfs_layer = new OpenLayers.Layer.Vector("Editable WFS", {<o:p></o:p></p><p class=MsoNormal> strategies: [new OpenLayers.Strategy.BBOX(), saveStrategy],<o:p></o:p></p><p class=MsoNormal> protocol: new OpenLayers.Protocol.WFS({<o:p></o:p></p><p class=MsoNormal> reportError: true,<o:p></o:p></p><p class=MsoNormal> visibility: true, <o:p></o:p></p><p class=MsoNormal> url: "http://gislidar.serveftp.com/geoserver/wfs",<o:p></o:p></p><p class=MsoNormal> featureType: "edd",<o:p></o:p></p><p class=MsoNormal> featureNS: "http://lidartest.org",<o:p></o:p></p><p class=MsoNormal> geometryName: "geom",<o:p></o:p></p><p class=MsoNormal> version: "1.1.0",<o:p></o:p></p><p class=MsoNormal> srsName: "EPSG:27700",<o:p></o:p></p><p class=MsoNormal> projection: WGS84_google_mercator, // specified because it is different than the map <o:p></o:p></p><p class=MsoNormal> })<o:p></o:p></p><p class=MsoNormal> }); <o:p></o:p></p><p class=MsoNormal>var groupLayer = new OpenLayers.Layer.WMS("Lidar Visualisation(Group)",<o:p></o:p></p><p class=MsoNormal> "http://gislidar.serveftp.com/geoserver/wms", {<o:p></o:p></p><p class=MsoNormal> layers: [<o:p></o:p></p><p class=MsoNormal> "lidartest:HillSha_dtm141" <o:p></o:p></p><p class=MsoNormal> ],<o:p></o:p></p><p class=MsoNormal> transparent: true,<o:p></o:p></p><p class=MsoNormal> format: "image/gif",<o:p></o:p></p><p class=MsoNormal> isBaseLayer: false,<o:p></o:p></p><p class=MsoNormal> buffer: 0,<o:p></o:p></p><p class=MsoNormal> // exclude this layer from layer container nodes<o:p></o:p></p><p class=MsoNormal> displayInLayerSwitcher: false,<o:p></o:p></p><p class=MsoNormal> visibility: false<o:p></o:p></p><p class=MsoNormal> }<o:p></o:p></p><p class=MsoNormal>);<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>// Create OpenStreet Map layer <o:p></o:p></p><p class=MsoNormal>var osm = new OpenLayers.Layer.OSM(); <o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>var mapPanel, printPage;<o:p></o:p></p><p class=MsoNormal>// set up viewport<o:p></o:p></p><p class=MsoNormal> new Ext.Viewport({<o:p></o:p></p><p class=MsoNormal> layout: "border",<o:p></o:p></p><p class=MsoNormal> items: [{<o:p></o:p></p><p class=MsoNormal> region: "north",<o:p></o:p></p><p class=MsoNormal> contentEl: "title",<o:p></o:p></p><p class=MsoNormal> height: 130<o:p></o:p></p><p class=MsoNormal> }, {<o:p></o:p></p><p class=MsoNormal> region: "west",<o:p></o:p></p><p class=MsoNormal> title: 'Adjust Transparency',<o:p></o:p></p><p class=MsoNormal> collapsible: true,<o:p></o:p></p><p class=MsoNormal> contentEl: "layertree",<o:p></o:p></p><p class=MsoNormal> width: 220,<o:p></o:p></p><p class=MsoNormal> split: true<o:p></o:p></p><p class=MsoNormal> }, {<o:p></o:p></p><p class=MsoNormal> region: "south",<o:p></o:p></p><p class=MsoNormal> title: 'Feature Table',<o:p></o:p></p><p class=MsoNormal> contentEl: "south",<o:p></o:p></p><p class=MsoNormal> height: 150,<o:p></o:p></p><p class=MsoNormal> collapsible: true,<o:p></o:p></p><p class=MsoNormal> split: true<o:p></o:p></p><p class=MsoNormal> }, {<o:p></o:p></p><p class=MsoNormal> region: "center",<o:p></o:p></p><p class=MsoNormal> id: "mappanel",<o:p></o:p></p><p class=MsoNormal> title: "Map",<o:p></o:p></p><p class=MsoNormal> xtype: "gx_mappanel",<o:p></o:p></p><p class=MsoNormal> map: map,<o:p></o:p></p><p class=MsoNormal> layers: [osm, google_hybrid,google_physical,google_satellite, groupLayer, wfs_layer],<o:p></o:p></p><p class=MsoNormal> split: true,<o:p></o:p></p><p class=MsoNormal> center: new OpenLayers.LonLat(-239570.659113951,6764338.19414546),<o:p></o:p></p><p class=MsoNormal> zoom: 10,<o:p></o:p></p><p class=MsoNormal> title: 'Map',<o:p></o:p></p><p class=MsoNormal> region: "east",<o:p></o:p></p><p class=MsoNormal> contentEl: "guide",<o:p></o:p></p><p class=MsoNormal> width: 220,<o:p></o:p></p><p class=MsoNormal> collapsible: true,<o:p></o:p></p><p class=MsoNormal> split: true,<o:p></o:p></p><p class=MsoNormal> items: [{<o:p></o:p></p><p class=MsoNormal> xtype: 'panel',<o:p></o:p></p><p class=MsoNormal> title: 'Info',, <o:p></o:p></p><p class=MsoNormal> height: 180<o:p></o:p></p><p class=MsoNormal> },{<o:p></o:p></p><p class=MsoNormal> xtype: 'panel',<o:p></o:p></p><p class=MsoNormal> title: 'Status',<o:p></o:p></p><p class=MsoNormal> id: "status",<o:p></o:p></p><p class=MsoNormal> height: 140<o:p></o:p></p><p class=MsoNormal> }]<o:p></o:p></p><p class=MsoNormal> }]<o:p></o:p></p><p class=MsoNormal> });<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> mapPanel = Ext.getCmp("mappanel");<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>// create our own layer node UI class, using the TreeNodeUIEventMixin<o:p></o:p></p><p class=MsoNormal> var LayerNodeUI = Ext.extend(GeoExt.tree.LayerNodeUI, new GeoExt.tree.TreeNodeUIEventMixin());<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> // using OpenLayers.Format.JSON to create a nice formatted string of the<o:p></o:p></p><p class=MsoNormal> // configuration for editing it in the UI<o:p></o:p></p><p class=MsoNormal> var treeConfig = new OpenLayers.Format.JSON().write([{<o:p></o:p></p><p class=MsoNormal> nodeType: "gx_baselayercontainer",<o:p></o:p></p><p class=MsoNormal> expanded: true,<o:p></o:p></p><p class=MsoNormal> }, {<o:p></o:p></p><p class=MsoNormal> nodeType: "gx_overlaylayercontainer",<o:p></o:p></p><p class=MsoNormal> expanded: true,<o:p></o:p></p><p class=MsoNormal> }, {<o:p></o:p></p><p class=MsoNormal> nodeType: "gx_layer",<o:p></o:p></p><p class=MsoNormal> layer: "Lidar Visualisation(Group)",<o:p></o:p></p><p class=MsoNormal> expanded: true,<o:p></o:p></p><p class=MsoNormal> isLeaf: false,<o:p></o:p></p><p class=MsoNormal> // create subnodes for the layers in the LAYERS param. If we assign<o:p></o:p></p><p class=MsoNormal> // a loader to a LayerNode and do not provide a loader class, a<o:p></o:p></p><p class=MsoNormal> // LayerParamLoader will be assumed.<o:p></o:p></p><p class=MsoNormal> loader: {<o:p></o:p></p><p class=MsoNormal> param: "LAYERS"<o:p></o:p></p><p class=MsoNormal> }<o:p></o:p></p><p class=MsoNormal> }], true);<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> // create the tree with the configuration from above<o:p></o:p></p><p class=MsoNormal> tree = new Ext.tree.TreePanel({<o:p></o:p></p><p class=MsoNormal> border: true,<o:p></o:p></p><p class=MsoNormal> renderTo: "layertree",<o:p></o:p></p><p class=MsoNormal> region: "west",<o:p></o:p></p><p class=MsoNormal> title: "Layers",<o:p></o:p></p><p class=MsoNormal> enableDD: true,<o:p></o:p></p><p class=MsoNormal> width: 220,<o:p></o:p></p><p class=MsoNormal> split: true,<o:p></o:p></p><p class=MsoNormal> collapsible: true,<o:p></o:p></p><p class=MsoNormal> collapseMode: "mini",<o:p></o:p></p><p class=MsoNormal> autoScroll: false,<o:p></o:p></p><p class=MsoNormal> plugins: [<o:p></o:p></p><p class=MsoNormal> new GeoExt.plugins.TreeNodeRadioButton({<o:p></o:p></p><p class=MsoNormal> listeners: {<o:p></o:p></p><p class=MsoNormal> "radiochange": function(node) {<o:p></o:p></p><p class=MsoNormal> alert(node.text + " is now the active layer.");<o:p></o:p></p><p class=MsoNormal> }<o:p></o:p></p><p class=MsoNormal> }<o:p></o:p></p><p class=MsoNormal> })<o:p></o:p></p><p class=MsoNormal> ],<o:p></o:p></p><p class=MsoNormal> loader: new Ext.tree.TreeLoader({<o:p></o:p></p><p class=MsoNormal> // applyLoader has to be set to false to not interfer with loaders<o:p></o:p></p><p class=MsoNormal> // of nodes further down the tree hierarchy<o:p></o:p></p><p class=MsoNormal> applyLoader: false,<o:p></o:p></p><p class=MsoNormal> uiProviders: {<o:p></o:p></p><p class=MsoNormal> "layernodeui": LayerNodeUI<o:p></o:p></p><p class=MsoNormal> }<o:p></o:p></p><p class=MsoNormal> }),<o:p></o:p></p><p class=MsoNormal> root: {<o:p></o:p></p><p class=MsoNormal> nodeType: "async",<o:p></o:p></p><p class=MsoNormal> // the children property of an Ext.tree.AsyncTreeNode is used to<o:p></o:p></p><p class=MsoNormal> // provide an initial set of layer nodes. We use the treeConfig<o:p></o:p></p><p class=MsoNormal> // from above, that we created with OpenLayers.Format.JSON.write.<o:p></o:p></p><p class=MsoNormal> children: Ext.decode(treeConfig)<o:p></o:p></p><p class=MsoNormal> },<o:p></o:p></p><p class=MsoNormal> listeners: {<o:p></o:p></p><p class=MsoNormal> "radiochange": function(node){<o:p></o:p></p><p class=MsoNormal> alert(node.layer.name + " is now the the active layer.");<o:p></o:p></p><p class=MsoNormal> }<o:p></o:p></p><p class=MsoNormal> },<o:p></o:p></p><p class=MsoNormal> rootVisible: false,<o:p></o:p></p><p class=MsoNormal> lines: false,<o:p></o:p></p><p class=MsoNormal> });<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks<o:p></o:p></p><p class=MsoNormal>Gary<o:p></o:p></p></div></body></html>