1

I want to do the following: add

metadata: "this is the layer metadata" 

....to my openlayers layer config.

This should then be presented in an extjs grid. I can use

alert(layername.metadata);

to display the string inside the config member so I know it works.

To display this in the extjs grid I have used the following code

var myData = [];
var x=mapPanel.map.layers;
for (var i=0; i<x.length; i++) {
  // alert(mapPanel.map.layers[i].metadata);
    myData.push(mapPanel.map.layers[i].metadata);
}

var store = new Ext.data.ArrayStore({
        fields: [
           {name: 'metadata'}
        ]
        });

store.loadData(myData);

var myStore = new GeoExt.data.LayerStore({
    map: map,
    layers: mapPanel.layers
}); 

var grid = new Ext.grid.GridPanel({
        title: "Available Map Layers",
        region: "center",
        height: 300,
        viewConfig: {forceFit: true},
        store: store,
        columns: [
            {
                header: "metadata",
                dataIndex: "metadata",
                sortable: true
            }
        ]
    });

var metadataWin = new Ext.Window({
                title: "Map layers",
                layout: 'fit',
                width: '600',
                height: 'auto',
                border: false,
                closable: true,
                collapsible: true,
                x: 450,
                y: 100,
                resizable: true,
                closeAction: 'hide',
                plain: true,
                items: [grid]
           });
    metadataWin.show();     

the grid show the correct amount of rows, but only the first letter is shown....this is probably a newbie javascript error.

Can anyone see where i´m going wrong?

yours,

Rob

1 Answer 1

2

i have done adding this metadata with this following code:

var vectorLayer = new OpenLayers.Layer.Vector("Building", {
    stylemap: styles,
    visibility: false,
    rangeOfZoom: '9-12',
    metadata: 'write What you Want'
});

map.addLayer(vectorLayer);

and you can reach all layer's metadata as ...:

var layers = map.layers;
for(var a = 0; a < layers.length; a++){
   alert(layers[a].metadata)
};

i hope it helps you

1
  • Thanks for the tip. I have basically come up with the same thing but instead of displaying the metadata in an alert I would like to build an array and display them using an ext.grid Commented Mar 27, 2012 at 10:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.