[Users] variables in filter of LayerContainer loader
Frans Knibbe
frans.knibbe at geodan.nl
Fri Feb 11 16:38:26 CET 2011
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
>> Users at geoext.org
>> http://www.geoext.org/cgi-bin/mailman/listinfo/users
>>
>
>
> _______________________________________________
> Users mailing list
> Users at geoext.org
> http://www.geoext.org/cgi-bin/mailman/listinfo/users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.geoext.org/pipermail/users/attachments/20110211/46f68236/attachment.htm
More information about the Users
mailing list