[Users] Setting map layer radio button via JS

Pierre Giraud pierre.giraud at camptocamp.com
Fri Dec 10 14:26:10 CET 2010


Hi,

I've just tried and I've succeeded in using the following piece of code :

var node = treePanel.root.findChild('layer', newVectorLayer, true);
Ext.get(node.attributes.radio).set({
    'checked': 'checked'
});

This won't fire the 'radiochange' event though. However, I think you can
execute the 'set active layer' code on your own at the same time.

Please also consider using the new "GeoExt.plugins.TreeNodeRadioButton"
instead of the mixin. You may need a recent version of GeoExt though.

Regards,
Pierre

On Thu, Dec 9, 2010 at 10:39 AM, David E. Reksten <der at dod.no> wrote:

> I have layer tree in my application with both checkboxes (visibility)
> and radiobuttons ("active layer").
>
> Users may add new vector layers via a button, but for the moment they
> must always manually click the radio button after adding the layer to
> activate it. I would have preferred that a new layer was automatically
> checked, but I am unable to find out how to do it. Ideally, I would
> like to set the radio button at the same time as after having added
> the new layer to the map. I have googled extensively, but I suspect
> that I am using the wrong terminology here, as I have been unable to
> find out how to achieve this. Any hints would be very much
> appreciated!
>
> My tree panel is defined like this:
>
>    treeConfig = [{
>        nodeType: "gx_baselayercontainer",
>        text: "Base layers",
>        expanded: true
>    }, {
>        nodeType: "gx_overlaylayercontainer",
>        text: "My overlays",
>        expanded: true,
>        loader: {
>            baseAttrs: {
>                radioGroup: "foo",
>                uiProvider: "use_radio"
>            }
>        }
>    }];
>
>    treePanel = new Ext.tree.TreePanel({
>        id: 'mainpanel',
>        border: true,
>        region: "west",
>        title: "My layers",
>        width: 200,
>        split: true,
>        collapsible: true,
>        margins: '0 0 5 5',
>        collapseMode: "mini",
>        autoScroll: true,
>        loader: new Ext.tree.TreeLoader({
>            // applyLoader has to be set to false to not interfere with
> loaders
>            // of nodes further down the tree hierarchy
>            applyLoader: false,
>            uiProviders: {
>                "use_radio": Ext.extend(GeoExt.tree.LayerNodeUI, new
> GeoExt.tree.RadioButtonMixin());
>            }
>        }),
>        root: {
>            nodeType: "async",
>            children: treeConfig
>        },
>        listeners: {
>            "radiochange": function(node){
>                // toggle active layer
>            }
>        },
>        rootVisible: false,
>        lines: false
>    });
>
> After the user has clicked the button to add a layer:
>    // ... newVectorLayer is defined here ...
>    map.addLayer(newVectorLayer);
>    // would now like to activate the radio button in the TreePanel
> for "newVectorLayer", so that the "radiochange" event is triggered:
> but how?
>
>
> Regards,
> David
> _______________________________________________
> Users mailing list
> Users at geoext.org
> http://www.geoext.org/cgi-bin/mailman/listinfo/users
>



-- 
Pierre GIRAUD
Géomaticien, Analyste

Camptocamp France SAS
Savoie Technolac, BP 352
73377 Le Bourget du Lac, Cedex

Tel : 00 33 4 79 44 44 93
Mail : pierre.giraud at camptocamp.com
http://www.camptocamp.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.geoext.org/pipermail/users/attachments/20101210/2946fda5/attachment.htm 


More information about the Users mailing list