[GIS] How to zoom map after CQL_Filter

cql-filtergeoserveropenlayers-2

I have WMS map, after applying CQL filter to layer how can I zoom map to see filter result?

UPDATE:

Here is my code what I'm trying to do

var layerArray = map.layers;
var someLayer;

for (var i = 0; i < layerArray.length; i++) {
    if (layerArray[i].name == "myLayer"){
        someLayer = layerArray[i];
        break;
        }
}

someLayer.mergeNewParams({
    "CQL_FILTER": celIDCondition /* (CID =1351 and LAC = 401) */
});

// instead of somelayer.maxExtend I want to extent map acording to CQL_FILTER result
map.zoomToExtent(someLayer.maxExtent);

Best Answer

you can try:

var dataExtent = vectors.getDataExtent();
map.zoomToExtent(dataExtent);

or

map.zoomToExtent(vectors.getDataExtent());

.

vectors is the layer which you add features from CQL_Filter.

you can try it here with firebug writing this to console:

map.zoomToExtent(states.getDataExtent())

UPDATE:

var fixWMSLayerExtent = function(layer)
{
var readr = new Ext.data.XmlReader(
{ record: 'Layer'},
[
{name: 'name', mapping: 'Name'}
,{name: 'minx', mapping: 'LatLonBoundingBox > @minx'}
,{name: 'miny', mapping: 'LatLonBoundingBox > @miny'}
,{name: 'maxx', mapping: 'LatLonBoundingBox > @maxx'}
,{name: 'maxy', mapping: 'LatLonBoundingBox > @maxy'}
]);

var myStore = new Ext.data.Store({
url : "/MapProxy?url=" + layer.url +'&request=GetCapabilities' ,
reader : readr
});
myStore.load({'layer' : layer, callback: function(r, options, success)
{
var rindex = this.find('name', options.layer.name, 0, true, true);
var rec = this.getAt(rindex);
layer.maxExtent = new OpenLayers.Bounds(rec.data.minx, rec.data.miny, rec.data.maxx, 
rec.data.maxy);
} });
};

the code is from Sergey Malgin...

i hope it helps you...

Related Question