Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I got the GeoExt QueryPanel working so far, it recognizes the layers available on my Geoserver but it is not able to get the attribute columns for the dataset. I configured an osgeo proxy on my Apache Server, I use the override-ext-ajax.js and have the OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url="; class configured.

A DescribeFeatureType request is sent when selecting the layer I want to filter. The same happens when trying to choose the attribute column in the query panel, but there are none displayed.

The sent request URLs look like this:

http://localhost/cgi-bin/proxy.cgi?url=
http%3A%2F%2Flocalhost%2Fcgibin%2Fproxy.cgi%2Fwfs%3F
VERSION%3D1.1.0%26REQUEST%3DDescribeFeatureType%26TYPENAME%3Dcases%26query%3D

The strange part here is, that the request is sent via the proxy.cgi twice. The request URL should look like this, going passed geoserver´s WFS:

http://localhost/cgi-bin/proxy.cgi?url=
http%3A%2F%2Flocalhost%3A8080%2Fgeoserver%2Fwfs%3F
VERSION%3D1.1.0%26REQUEST%3DDescribeFeatureType%26TYPENAME%3Dcases%26query%3D

Does anybody have a clue what´s going wrong here and why the request URL is wrong? The strange thing is that even if I remove the Open.Layers.ProxyHost class and the override-ext-ajax.js from my application, the request is sent that way. Can it be related to my server? Other requests sent in the application (GET & POST) work fine. The (relevant) code looks like this, maybe you guys can spot the error...

OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";

    var owsUrl = "/geoserver/wfs";

    var symbolizer = OpenLayers.Feature.Vector.style["default"];

    symbolizer.graphicName = "square";

    var store;

    Ext.onReady(function() {

                store = new GeoExt.data.WFSCapabilitiesStore({
                url: Ext.urlAppend(owsUrl,
                   "VERSION=1.0.0&REQUEST=GetCapabilities"),
                protocolOptions: {version: "1.1.0"},
                autoLoad: true,
                listeners: {
                    load: initApp
                }
                });
            });   

    function initApp() {
            var vecLayer = new OpenLayers.Layer.Vector("Query", {
                eventListeners: {
                    featuresadded: function() {
                        var extent = vecLayer.getDataExtent()
                        mapPanel.map.zoomToExtent(extent)
                    }
                }
            });   



var queryPanel = new gxp.QueryPanel({
                title: "Query",
                region: "center",
                width: 350,
                bodyStyle: "padding: 10px",
                autoScroll: true,
                layerStore: store,
                bbar: ["->", {
                    text: "Query",
                    handler: function() {
                        queryPanel.query();
                    }
                }],
                listeners: {
                    query: function(panel, store) {
                        var rule = new OpenLayers.Rule({
                            filter: panel.getFilter()
                        });
                        rule.symbolizer[queryPanel.symbolizerType] = symbolizer;
                        var style = new OpenLayers.Style("", {rules: [rule]});
                        wms.mergeNewParams({
                            sld_body: new OpenLayers.Format.SLD().write({
                                namedLayers: [{
                                    name: panel.selectedLayer.get("name"),
                                    userStyles: [style]
                                }]
                            })
                        });

                        store.bind(vecLayer, {
                            initDir: GeoExt.data.FeatureStore.STORE_TO_LAYER
                        });
                    }
                }
            });

Any help is appreciated!

Cheers,

Philippe

share|improve this question
1  
too many broad questions. no code. try asking a straight forward question and include as many details and code as you can. –  CaptDragon Sep 6 '11 at 19:37
add comment

Know someone who can answer? Share a link to this question via email, Google+, Twitter, or Facebook.

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.