[Users] Displaying single legend items when the layer is a group layer comprised of several layers

Andrew Stewart Andrew.Stewart at reddeer.ca
Fri Nov 19 18:47:39 CET 2010


Thanks again for the great suggestions, setting the layer to false visibility increased the speed noticeably. I will attempt to work on modifying the code for a drag/drop implementation although I can safely say it's going to take me quite some time to figure it out :P Will post whatever I can accomplish, thanks again. 



-----Original Message-----
From: Andreas Hocevar [mailto:ahocevar at opengeo.org] 
Sent: November 19, 2010 10:17 AM
To: Andrew Stewart
Cc: users at geoext.org
Subject: Re: [Users] Displaying single legend items when the layer is a group layer comprised of several layers

Hi,

drag-drop is not implemented yet for groups created by LayerParamLoader. As with all missing features, patches are welcome.

The reason for the longer loading times is probably your server. It feels faster when tiles for single layers are loaded (more tiles, earlier visible results). It may help to set the initial layer visibility to false - this will save the loading of tiles with all layers before you turn off some and force a reload with mergeNewParams. So you could turn on the visibility the after calling mergeNewParams.

Andreas.


On Nov 19, 2010, at 16:40 , Andrew Stewart wrote:

> Thanks that works much better. Everything is working great for me except a small issue... Before I was able to move the layers around and change the order of visible layers ontop/below each other by dragging and using enableDD:true. Although I can still drag the layers around it doesn't seem to change the order of them.. Is this because they are grouped and so I've lost that functionality? I guess I can live with that... One other thing it seems to take about 3-5 seconds sometimes initially to turn on/off my layers.. Is this also because it is grouped so it will be slower this way or can I speed this up somehow? Thanks again for all the info.
> 
> 
> -----Original Message-----
> From: Andreas Hocevar [mailto:ahocevar at opengeo.org] 
> Sent: November 19, 2010 1:17 AM
> To: Andrew Stewart
> Cc: users at geoext.org
> Subject: Re: [Users] Displaying single legend items when the layer is a group layer comprised of several layers
> 
> On Nov 19, 2010, at 00:22 , Andrew Stewart wrote:
> 
>> Ok I did it in a different spot after my TreePanel was actually rendered and it works, was able to expand the node and uncheck a childnode then collapse it, although I'm not sure if this is the best way to do this.
> 
> The other way would be to call
> 
> layer_Base.mergeNewParams({LAYERS: "only,visible,layers"});
> 
> in your loader's load event:
> 
>> layerList_Base = new GeoExt.tree.LayerNode({
>>   "layer": layer_Base,
>>   "isLeaf": false,
>>   "loader": {
>>       "param": "LAYERS",
>         on: {
>             "load": function() {
>                 layer_Base.mergeNewParams({LAYERS: "only,visible,layers"});
>             }
>         }
>>   }
>> });
> 
> 
> 
> Regards,
> Andreas.
> 
>> 
>> 
>> -----Original Message-----
>> From: users-bounces at geoext.org [mailto:users-bounces at geoext.org] On Behalf Of Andrew Stewart
>> Sent: November 18, 2010 4:11 PM
>> To: users at geoext.org
>> Subject: Re: [Users] Displaying single legend items when the layer is a group layer comprised of several layers
>> 
>> I am having a slight issue with the LayerNode setup. Unfortunately I need to have some layers not displayed during load of the map, but using the below code all layers are automatically checked. When I try the code layerList_Base.expand();   so that I can uncheck one of the child nodes I get the following error - 
>> 
>> 
>> Message: 'insertAdjacentHTML' is null or not an object
>> Line: 7
>> Char: 5686
>> Code: 0
>> URI: ext-3.3.0/ext-all.js
>> 
>> Is there a better way for me to uncheck one of these layers or something I can do to correct this error? I just need to be able to make a few of these layers not displayed so they are unchecked during load.. Appreciate any help!
>> 
>> 
>> // Base Group Layers               
>> var layer_Base = new OpenLayers.Layer.WMS("Base", "http://localhost/WebService/Request.aspx",
>>                   {
>>                       layers: ['Rural_Lot_Line', 'Rural_Block_Line', 'Section_Lines', 'Linear_Parks', 'School_Sites', 'Recreation_Sites', 'Neighbourhood_Parks', 'Major_Parks', 'Neighbourhood_Boundary', 'Neighbourhood_Area__clear_', 'Hydrology', 'City_Boundary', 'Street_Secondary_Segment', 'Street_Segment', 'Arterial', 'Highway', 'Rural_Highway', 'Bridge'],
>>                       VERSION: "1.1.1",
>>                       format: 'image/png',
>>                       transparent: true
>>                   },
>>                   { isBaseLayer: false,
>>                     singleTile: true,
>>                     buffer: 4
>>                   }
>>               );
>> 
>> 
>> layerList_Base = new GeoExt.tree.LayerNode({
>>       "layer": layer_Base,
>>       "isLeaf": false,
>>       "checked": false,
>>       "cls": "rootnode",
>>       "nodeType": "gx_layer",
>>       "loader": {
>>       "param": "LAYERS"
>>       }
>>       });
>> 
>> 
>> -----Original Message-----
>> From: users-bounces at geoext.org [mailto:users-bounces at geoext.org] On Behalf Of Andrew Stewart
>> Sent: November 18, 2010 2:39 PM
>> To: 'Andreas Hocevar'
>> Cc: users at geoext.org
>> Subject: Re: [Users] Displaying single legend items when the layer is a group layer comprised of several layers
>> 
>> Thank you very much! I was looking at this before and could not get it to work.. But your provided example code was exactly enough to get me going.. The problem I was doing before was when defining my layers I wasn't seperating them by 'layer name', 'layer name' .. I had them all individually inside only one 'layer name, layer name' but when I put quotes around each one and seperated them by comma it works perfectly, thanks again!
>> 
>> 
>> -----Original Message-----
>> From: Andreas Hocevar [mailto:ahocevar at opengeo.org] 
>> Sent: November 18, 2010 2:26 PM
>> To: Andrew Stewart
>> Cc: users at geoext.org
>> Subject: Re: [Users] Displaying single legend items when the layer is a group layer comprised of several layers
>> 
>> Hi,
>> 
>> you may want to have a look at http://geoext.org/lib/GeoExt/widgets/tree/LayerParamLoader.html.
>> 
>> For your layer_Base layer, the tree node configuration could look like this:
>> 
>> layerList_Base = new GeoExt.tree.LayerNode({
>>   "layer": layer_Base,
>>   "isLeaf": false,
>>   "loader": {
>>       "param": "LAYERS"
>>   }
>> });
>> 
>> Regards,
>> Andreas.
>> 
>> On Nov 18, 2010, at 22:09 , Andrew Stewart wrote:
>> 
>>> Is this possible to display each individual item so I can still check/uncheck them using my below code, or can I use a different GeoExt/Ext container to accomplish this? I need to keep the layers grouped because of performance but I still need to be able to display each individual layer so that I can turn them on/off. Is this possible? Any example/help immensely appreciated.
>>> 
>>> 
>>> My layer group is declared as the following -
>>> 
>>>    // Base Group Layers
>>>                 var layer_Base = new OpenLayers.Layer.WMS("Base Layers", "http://localhost/WebService/Request.aspx",
>>>                   {
>>>                       layers: ['Bridge,Rural_Highway,Highway,Arterial,Street_Segment, Street_Secondary_Segment, City_Boundary,                         Hydrology,Neighbourhood_Area__clear_,Neighbourhood_Boundary,Major_Parks,Neighbourhood_Parks,Recreation_Sites,School_Sites,Linear_Parks,Section_Lines,Rural_Block_Line,Rural_Lot_Line'],
>>>                       VERSION: "1.1.1",
>>>                       transparent: true
>>>                   },
>>>                   { isBaseLayer: false,
>>>                     singleTile: true,
>>>                     buffer: 4
>>>                   }
>>>               );
>>> 
>>> 
>>> Then I define my Treenode root and treepanel, and create a GeoExt LayerContainer to load the layer into the root node. Can the layers above be displayed as individual items with separate checkboxes somehow?
>>> 
>>> var layerRoot_Legend = new Ext.tree.TreeNode({
>>>       enableDD: true,
>>>       text: "All Legend Items",
>>>       loaded: true,
>>>       expanded: true
>>>       });
>>> 
>>>       var layerTree_Legend = new Ext.tree.TreePanel({
>>>       title: '',
>>>       root: layerRoot_Legend,
>>>       enableDD: true,
>>>       applyLoader: true,
>>>       rootVisible: false
>>>       });
>>> 
>>> 
>>> //Base layerList
>>>       layerList_Base = new GeoExt.tree.LayerContainer({
>>>       text: 'Base',
>>>       layerStore: mapPanel.layers,
>>>       leaf: false,
>>>       enableDD: true,
>>>       cls: 'rootnode',
>>>       singleClickExpand: true,
>>>       expanded: false,
>>>       checked: false,
>>>       listeners: {
>>>   'checkchange' :  function(node, checked)
>>>   {
>>>       // If a parent node is unchecked, uncheck all the children
>>>       if (node.getUI().isChecked()) {
>>>           node.expand();
>>>           node.eachChild(function(child){
>>>             child.ui.toggleCheck(true);
>>>           });
>>>       }
>>>       if (!node.getUI().isChecked())
>>>       {
>>>           node.expand();
>>>           node.eachChild(function(child) {
>>>               child.ui.toggleCheck(false);
>>>           });
>>>       }
>>>   }
>>> },
>>>       loader:
>>>       {
>>>           filter: function(record)
>>>           { 
>>>             if (record.data.title == 'Base Layers')
>>>                   return true; 
>>>           }
>>>           }
>>>       });
>>> 
>>> 
>>> layerRoot_Legend.appendChild(layerList_Base);
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> This e-mail is intended for the original recipient(s) only. If you have received it in error, please advise the sender and delete this message.
>>> 
>>> _______________________________________________
>>> Users mailing list
>>> Users at geoext.org
>>> http://www.geoext.org/cgi-bin/mailman/listinfo/users
>> 
>> -- 
>> Andreas Hocevar
>> OpenGeo - http://opengeo.org/
>> Expert service straight from the developers.
>> 
>> 
>> 
>> [This message has been scanned for security content threats and viruses.]
>> 
>> [The City of Red Deer I.T. Services asks that you please consider the environment before printing this e-mail.]
>> 
>> 
>> 
>> 
>> _______________________________________________
>> Users mailing list
>> Users at geoext.org
>> http://www.geoext.org/cgi-bin/mailman/listinfo/users
>> 
>> 
>> [This message has been scanned for security content threats and viruses.]
>> 
>> [The City of Red Deer I.T. Services asks that you please consider the environment before printing this e-mail.]
>> 
>> 
>> 
>> 
>> _______________________________________________
>> Users mailing list
>> Users at geoext.org
>> http://www.geoext.org/cgi-bin/mailman/listinfo/users
>> 
>> 
>> [This message has been scanned for security content threats and viruses.]
>> 
>> [The City of Red Deer I.T. Services asks that you please consider the environment before printing this e-mail.]
>> 
>> 
>> 
>> 
>> _______________________________________________
>> Users mailing list
>> Users at geoext.org
>> http://www.geoext.org/cgi-bin/mailman/listinfo/users
> 
> -- 
> Andreas Hocevar
> OpenGeo - http://opengeo.org/
> Expert service straight from the developers.
> 
> 
> 
> [This message has been scanned for security content threats and viruses.]
> 
> [The City of Red Deer I.T. Services asks that you please consider the environment before printing this e-mail.]
> 
> 
> 
> 
> _______________________________________________
> Users mailing list
> Users at geoext.org
> http://www.geoext.org/cgi-bin/mailman/listinfo/users



-- 
Andreas Hocevar
OpenGeo - http://opengeo.org/
Expert service straight from the developers.



[This message has been scanned for security content threats and viruses.]

[The City of Red Deer I.T. Services asks that you please consider the environment before printing this e-mail.]






More information about the Users mailing list