Asle Benoni | 13 Jun 2012 15:46
Picon
Gravatar

Re: Correct format for cql_filter in WMSgetFeatiureInfo

Hi,

I found a value for the WMSgetFeatureInfo() function and not sure how to put in my layers.

Do I use this:

layerUrls: <how do I write several layers here?...>
or
layers:  <how do I write several layers here?...>

Thanks for any help!
~asle

2012/6/12 Jørgen Schøyen Nicolaysen <smockmakker <at> gmail.com>
I only got a few ideas, hope they help.

1) If you are using several layers from geoserver for you WMS layer, the cql_filter may need to be a comma seperated list matching the layers on the WMS you are showing. (You are using several layers if the WMS call parameter, as seen in FireBug, shows http://.../wms?...&layers=layer1,layer2,layer3&..).  BTW: From your original code for initializing  WMSGetFeatureInfo I do not see any arrayof urls.

2) You should init WMSGetFeatureInfo with the parameter 'layer', which is your (openlayers) WMS layer. The 'url' parameter is only needed to pinpoint exaclty which url to use if you set up this control parameter 'layer' with an array, i think. However WMSGetFeature will try to pick an url from the layer array if it is not provided.  Why not try to read the WMSGetFeatureInfo.js class to get the ide about how this works.

3) The code
  if (typeof param != 'undefined') {
may be wrong. 'param' may be null or "", that is not an "undefined" value.

4) You may need an proxy? http://trac.osgeo.org/openlayers/wiki/FrequentlyAskedQuestions#ProxyHost

5) You are also using CQL filter on your basemaps (according to some of the code you have shown here). Are you sure this is correct.  


On Tue, Jun 12, 2012 at 9:02 PM, Asle Benoni <asle.benoni-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
I read in this discussion: https://getsatisfaction.com/opengeo/topics/error_in_wmsgetfeatureinfo that "If you use an array of URLs in your WMS layers, you do not need layerUrls." and that is exactly what I am using, an array of layers. I can see it in the WMS call to fetch features. Or am I uncorrect?


2012/6/12 Asle Benoni <asle.benoni <at> gmail.com>
Thanks! Clear enough but not for a newbie like me :-) Could you supply a sample code for this? I have all the layers in an array layers[n]. How would I write the code? I have a cql_filter that I apply a search filter and I use a function like this:

var mLayers = map.layers;
for(var a = 4; a < (mLayers.length); a++ ){
    mLayers[a].mergeNewParams({'CQL_FILTER': param});
    mLayers[a].setVisibility(true);
}}
  

2012/6/12 Ian Turton <ijturton-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
On 12 June 2012 11:16, Asle Benoni <asle.benoni-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> Hello,
> I am struggling with this code where I have a cql_filter generated from a
> search field. If the user has not searched anything the cql_filter must be
> empty. I had problems getting a correct syntax if the cql_filter is empty so
> I had to set a default value. But when I have a search code for cql_filter
> it fails telling me in Firebug:
>
> Layers and filters are mismatched, you need to provide one filter for each
> layer
>

That seems clear enough - you need to provide one filter for each
layer that you are querying - in your case you probably want to limit
the number of layers to just the one you are interested in.

Ian

--
Ian Turton



_______________________________________________
Users mailing list
Users-qjLDD68F18NQ/50SGhhxiw@public.gmane.orgo.org
http://lists.osgeo.org/mailman/listinfo/openlayers-users



_______________________________________________
Users mailing list
Users@...
http://lists.osgeo.org/mailman/listinfo/openlayers-users

Gmane