2

I am building a web application to facilitate the handling of approximately 2500+ historic maps. I think it would be too difficult for our users to search for specific maps in an ordinary layer tree.

Is there some way to implement a layersearch in a GeoExt/Geoserver stack?

I'd be grateful for any idea how to deal with that even if it's not an "out-of-the-box"-solution.

3

What about providing the users with an intelligent search bar (that auto-suggests answers)? This can be easily populated with layer names by making an AJAX GET layer names request to GeoServer at page load. You could then include a few defaults and this 'intelligent' load list.

2

Thanks for your ideas everyone. I came up with a neat solution myself and wanted to share it with you all. In order to manage that huge amount of layers I use an ExtJS Grid Panel which gets its entrys over a GetCapabilities Request from my GeoServer. In addition to this I use a custom plugin which embeds a pretty fast search (or better filter) functionality (tested with extjs 3). Here is my code:

{
                        xtype: 'grid',
                        title: "Verf&uumlgbare Karten",
                        ref: "capsGrid",
                        id: "capsGrid",
                        height: 150,
                        viewConfig: {forceFit: true},
                        selModel: new Ext.grid.RowSelectionModel({singleSelect:false}),
                        plugins : [new Ext.ux.grid.Search({
                                    iconCls:'icon-zoom'
                                    ,readonlyIndexes:['country']
                                    ,disableIndexes:['pctChange']
                                    ,minChars:1
                                    ,autoFocus:true
                                    ,mode:'local' // to filter on local; for remote add mode:'remote'
                                    ,width: '20'
                                })],
                        bbar: [{
                        text: "Hinzuf&uumlgen",
                        handler: function() {
                            Heron.layout.items[0].items[1].items[0].selModel.grid.getSelectionModel().each(function(record) {
                                var clone = record.clone();
                                clone.getLayer().mergeNewParams({
                                format: "image/png",
                                transparent: true
                                });
                                var map = Heron.App.getMapPanel();
                                map.layers.add(clone);
                                Heron.App.getMap().zoomToExtent(
                                OpenLayers.Bounds.fromArray(clone.get("llbbox"))
                                );
                            });
                        }
                        }],
                        store: new GeoExt.data.WMSCapabilitiesStore({
                            url: "http://localhost:8080/geoserver/wms?service=wms&version=1.1.1&request=GetCapabilities",
                            autoLoad: true
                            }),
                            columns: [
                                //{header: "Name", dataIndex: "name", sortable: true},
                                {header: "Titel", dataIndex: "title", sortable: true},
                                //{header: "Abstract", dataIndex: "abstract"}
                                ],
                        },

In the end it looks like this: enter image description here

Here are all the links you need:

The gridsearch plugin

Description how to use this plugin

OpenGeo Workshop that shows how to configure your Ext Grid

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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