Tuesday, 9 January 2018

How to zoom to selected Feature in ArcMap using ArcObjects?


By using the QueryFilter I am getting some features based on the query and I am placing that feature names in a listbox. When the user selects a particular name in the listbox that feature has to be zoomed to in the map.


Below is my code:


IQueryFilter pQueryFilter = new QueryFilterClass();
pQueryFilter.WhereClause = textBox1.Text + textBox2.Text;
ICursor pCursor = pFeatureClass.Search(pQueryFilter, true) as ICursor;
IRow pRow = pCursor.NextRow();

while (pRow != null)
{
listBox2.Items.Add(pRow.get_Value(9).ToString());
pRow = pCursor.NextRow();

}

Here is what I tried:


IActiveView pActiveView = pMxDocument.ActiveView;
IGeometry pGeometry = pFeature.Shape;

IEnvelope pEnvelope = pGeometry.Envelope;

pActiveView.Extent = pEnvelope.Expand(1.2, 1.2, true);

But I am unable to zoom.



Answer



This is not tested.


public void ZoomTo(IGeometry geometry)
{
IMxDocument doc = (IMxDocument)ArcMap.Application.Document;

IMap map = (IMap)doc.FocusMap;
IActiveView pActiveView = (IActiveView)map;
IEnvelope pEnvelope;

if (geometry is IPoint)
{
IEnvelope currentEnv = pActiveView.Extent;
IPoint point = (IPoint)geometry;
currentEnv.CenterAt(point);
pActiveView.Extent = currentEnv;

map.MapScale = 100; //to set the scale to 1:100
}
else
{
pEnvelope = geometry.Envelope;
pEnvelope.Expand(1.2, 1.2, true);

pActiveView.Extent = pEnvelope;
}


pActiveView.Refresh();
}

No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...