Hello Seth,

The themes and theme variables are defined before the loop. I have just done some further testing: When the filter function is called it will always use the last setting of the "theme" variable. So the filter function is not used within the loop, but afterwards.

As an example, let's assume the themes are 'vegetation', 'water' and 'roads'. I want to loop through those themes and build GeoExt.tree.LayerContainer nodes where the theme matches a layer property. What I see now is that the value 'roads' is always used for matching because it is the last value in the theme array.

In Firebug I see that the line with the filter function is executed at the moment when I expand the node. So that is completely after the loop. I see the the line is called outside the loop if I set "expanded: true", too.

My approach is obviously wrong but I have no idea how to progress. Could there be a way of creating LayerContainers in a loop that use loaders that match with a literal instead of a variable?

Frans

On 2011-02-11 11:53, geographika wrote:
Hi,

Where are your themes and theme variables defined? They will need to be in the scope of the filter function to work correctly. Try putting a debugger; statement in to see exactly what is in these variables (I'd imagine undefined at the moment).
filter: function(record){
        debugger;
         return (record.get("layer").options.themeId == themes[theme].id);
}

Regards,

Seth
--
web:http://geographika.co.uk
twitter: @geographika

On 11/02/2011 11:32, Frans Knibbe wrote:
Hello!

I am trying to create several GeoExt.tree.LayerContainer nodes in my
layer tree. I want to group layers by a custom attribute (themes) that I
have added to the OpenLayers layer definition. Let's call this attribute
'themeId'. It could have values like 'vegetation', 'water', 'roads',
etc.. What I want to do is loop though the themes and create
.LayerContainers for matching layers. I am doing this by means of a
filter of the GeoExt.tree.LayerLoader, which looks like this:

filter: function(record){
         return (record.get("layer").options.themeId == themes[theme].id);
}

My problem is that the filter does not work :-). This seems to be caused
by the variable holding the theme ID ( themes[theme].id in the example
above) being unknown at them time the filter function is executed. If I
exchange the variable with a string everything works fine, like this:

filter: function(record){
         return (record.get("layer").options.themeId == 'vegetation');
}

So my question is: Can I somehow get the variable to have the right
value at the time the filter function is executed? Or is there another
way of dynamically building LayerContainers I could try?

Thanks!
Frans



_______________________________________________
Users mailing list
[email protected]
http://www.geoext.org/cgi-bin/mailman/listinfo/users



_______________________________________________
Users mailing list
[email protected]
http://www.geoext.org/cgi-bin/mailman/listinfo/users

_______________________________________________
Users mailing list
[email protected]
http://www.geoext.org/cgi-bin/mailman/listinfo/users

Reply via email to