I've created a GeoServer layer group. I'm using OpenLayers.Layer.WMS
to retrieve the layer group, and this works fine. In addition, I'd like to pull feature info for the layer. For this, I'm using OpenLayer's GetFeatureInfo
. But the GetFeatureInfo
only returns feature info for only one of the layers in the layer group. Is there a way I can retrieve feature info for both layers in the group? And, is this an optimal way of dealing with layer groups?
A section of my code is shown below:
var layer_group = new OpenLayers.Layer.WMS(
"Sample Layer Group",
"http://localhost:8081/geoserver/wms",
{layers: "layer_group_name", transparent: true},
{isBaseLayer: false, visibility: false}
);
map.addLayers([layer_group]);
to retrieve the layer group.
And:
map.events.register('click', map, function (e) {
var url = layer_group.getFullRequestString({
REQUEST: "GetFeatureInfo",
EXCEPTIONS: "application/vnd.ogc.se_xml",
BBOX: layer_group.map.getExtent().toBBOX(),
X: e.xy.x,
Y: e.xy.y,
INFO_FORMAT: 'text/html',
QUERY_LAYERS: layer_group.params.LAYERS,
WIDTH: layer_group.map.size.w,
HEIGHT: layer_group.map.size.h});
window.open(url,
"getfeatureinfo",
"location=0,status=0,scrollbars=1,width=600,height=150"
);
});
To retrieve the feature info.
My environment setup: GeoServer 2.1.3, PostGIS 1.5, OpenLayers 2.11.
EDIT: The features shown are only for one layer
Increasing FEATURE_COUNT
only increases the number of instances(rows) returned. The instances are over 1M. What I'd like to achieve is have one row having feature info for all the layers in the layer group.
Answer
There is no way to achieve what you want with a single request, a new custom behavior would need to be added that only gets only record for each layer. This would require coding, changing the GeoServer GetFeatureInfo code paths to handle a new vendor option (we cannot have such behavior by default, it's probably against the WMS spec).
The only thing I can think of is to know what layers are in the group and issue a separate GetFeatureInfo for each of the layers separately
No comments:
Post a Comment