Well, when I moved the application to a publicly-accessible server to
show you all, it worked as it should. Turns out my server has the latest
version of MapServer installed, but my workstation is running an older
one, and so I guess the problem got fixed in the newer release.
Yewondwossen Assefa wrote:
Bill,
You might try setting the layers in the QUERY_LAYERS parameter without
any space: QUERY_LAYERS: "us_interstate,us_states".
If that does not work, as suggested you might give the full URL sent
to Mapserver. From what I can see, query on more that one layer is
possible (URL using the Mapserver5.2.1 :
http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetFeatureInfo&BBOX=-173.433000,36.354100,-12.969800,83.746600&SRS=EPSG:4326&WIDTH=785&HEIGHT=232&LAYERS=park%2Cpopplace&STYLES=%2C&FORMAT=image/png&TRANSPARENT=TRUE&QUERY_LAYERS=popplace,park&INFO_FORMAT=text/plain&X=302&Y=121&feature_count=1
Best Regards.
Bill Thoen wrote:
I originally asked this on the OpenLayers forum, but was told that
this is really a Maperver question. So I'll try it here.
I've got a WMS layer that has two sub-layers in it and I'm trying to
get attribute information from them via a getFeatureInfo request, but
I can only get one of them to respond at a time. I've looked at the
docs at http://trac.openlayers.org/wiki/GetFeatureInfo and noticed
that you can specify several layers with the QUERY_LAYERS parameter,
but I'm finding that only the one listed first is active. Also, it's
not clear what layer you specify at the root of the request, but it
looks like it's supposed to be different from the layers you're
querying. Anyway, here's what I'm trying:
I open and load the combined layer like so:
base = new OpenLayers.Layer.WMS(
"Base",
"http://192.168.0.250/cgi-bin/mapserv?map=base.map",
{ layers: ["us_states", "us_interstate"] }
);
map.addLayer(base);
And here's the request string I'm sending to MapServer:
var url = base.getFullRequestString({
REQUEST: "GetFeatureInfo",
EXCEPTIONS: "application/vnd.ogc.se_xml",
FORMAT: 'png',
BBOX: map.getExtent().toBBOX(),
X: event.xy.x,
Y: event.xy.y,
INFO_FORMAT: 'text/plain',
QUERY_LAYERS: "us_interstate, us_states",
FEATURE_COUNT: 1,
WIDTH: map.size.w,
HEIGHT: map.size.h},
"http://192.168.0.250/cgi-bin/mapserv?map=base.map&");
OpenLayers.loadURL(url, '', this, setHTML);
Note the QUERY_LAYERS line. As shown here, it responds with
interstate attributes only when I click on an interstate roadway
feature, but I get nothing when I click on a state. If I reverse the
order of these layers in the list, then clicking on a state returns
attributes from the us_states table only. Even if I click on a spot
where features in both layers coincide, it returns only the
attributes for the layer listed first.
Also, setting the FEATURE_COUNT parameter to something higher than 1
just
gives me more results from the single that is working.
So how do I use multiple layers in the QUERY_LAYERS parameter, or do
I get only one at a time? Also, I just guessed at using the layer
called 'base' for the getFeatureInfo oject, what is supposed to be
used here?
TIA,
- Bill Thoen
_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users
_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users