[Users] Setting map layer radio button via JS
David E. Reksten
der at dod.no
Fri Dec 10 15:04:37 CET 2010
Nice! Thanks a lot for your answer.
I was also able to accomplish the same with this hack:
function setLayerRadioButton(layerID) {
selNodes = treePanel.getChecked();
Ext.each(selNodes, function(node){
if (node.layer.id == layerID) {
node.getUI().checkbox.nextElementSibling.setValue(1);
// trigger the 'radiochange' event manually here...
}
});
};
Regards,
David
2010/12/10 Pierre Giraud <pierre.giraud at camptocamp.com>:
> 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
>
More information about the Users
mailing list