[mapguide-users] Zoom to feature using ajaxviewer
veer-singh
veer-singh at hcl.com
Thu Sep 6 05:05:45 PDT 2012
Hello Lists..
Please help me out in this.
I am trying to zoom to a feature based on feature attribute value query.. I
am not selecting any feature on map. i just want to zoomto feature based on
my hardcoded query, here in below function you can assume fixed hardcoded
values for layername and selection which is actually a featid of feature.
i am using following function at server side...
public String OutputSelectionInHTML(MgMap map, MgFeatureService
featureService, string layerName, string selection, MgResourceService
resService, string mgMapName)
{
MgSelection mapSelection = new MgSelection(map);
mapSelection.Open(resService, mgMapName);
//MgReadOnlyLayerCollection layers = mapSelection.GetLayers();
MgLayerCollection layers = map.GetLayers();
String outString = null;
MgFeatureReader featReader = null;
if (layers != null)
{
for (int i = 0; i < layers.GetCount(); i++)
{
MgLayerBase nextLayer = layers.GetItem(i);
//MgLayer layer = (MgLayer)layers.GetItem(i);
if (nextLayer != null && (nextLayer.GetName() == layerName))
{
String layerClassName = nextLayer.GetFeatureClassName();
String selectString = "FeatId = " + selection;
String layerFeatureIdString =
nextLayer.GetFeatureSourceId();
MgResourceIdentifier layerResId = new
MgResourceIdentifier(layerFeatureIdString);
MgFeatureQueryOptions queryOptions = new
MgFeatureQueryOptions();
queryOptions.SetFilter(selectString);
featReader = featureService.SelectFeatures(layerResId,
layerClassName.Split(':')[1].ToString(), queryOptions);
while (featReader.ReadNext())
{
//MgByteReader
mgbyte=featReader.GetGeometry(MgPropertyType.Feature);
//mapSelection.AddFeatures(nextLayer, featReader,
mapSelection.GetSelectedFeaturesCount(nextLayer,
layerClassName.Split(':')[1].ToString()));
mapSelection.AddFeatures(nextLayer, featReader, 0);
}
//get XML from selection
string selectionXML = mapSelection.ToXml();
//get center
double selectionCenterX =
mapSelection.GetExtents(featureService).GetLowerLeftCoordinate().GetX() +
mapSelection.GetExtents(featureService).GetWidth() / 2;
double selectionCenterY =
mapSelection.GetExtents(featureService).GetLowerLeftCoordinate().GetY() +
mapSelection.GetExtents(featureService).GetHeight() / 2;
outString = "zoom~" + selectionXML + "~" +
selectionCenterX + "~" + selectionCenterY;
}
}
}
ClientScript.RegisterStartupScript(this.GetType(), "page", "");
}
following at client side
-----
VEER HCLTECH,INDIA
--
View this message in context: http://osgeo-org.1560.n6.nabble.com/Zoom-to-feature-using-ajaxviewer-tp5000178.html
Sent from the MapGuide Users mailing list archive at Nabble.com.
More information about the mapguide-users
mailing list