我试图弄清楚设置活动视图范围以能够查看弧形地图上所有选定要素的最佳方法是什么。
1.地图只有一层。2.特征用属性过滤。
下面是我尝试过的代码,我可以在其中循环遍历特征选择集中的特征但无法将活动视图范围设置为缩放以显示所有选定的部分。
PS:这类似于右键单击属性表并选择多行并进行缩放以选中。
private void ZoomToMultipleDGVSelection(List<int> selectedRightIDs)
{
IMxDocument pMxDoc = ArcMap.Document;
IMap pMap = (IMap)pMxDoc.ActiveView;
ESRI.ArcGIS.Carto.ILayer layer = GetLayersClass.GetFieldBoundaryLayer;
if (layer is ESRI.ArcGIS.Carto.IGroupLayer)
{
ESRI.ArcGIS.Carto.IGroupLayer groupLayer = layer as ESRI.ArcGIS.Carto.IGroupLayer;
ICompositeLayer pCompositeLayer = layer as ICompositeLayer;
int layers = pCompositeLayer.Count;
ILayer pLayer = pCompositeLayer.Layer[0];
IFeatureLayer pFeatureLayer = (IFeatureLayer)pLayer;
IFeatureSelection pFeatureSelection = (IFeatureSelection)pLayer;
ISelectionSet pSelectionSet = pFeatureSelection.SelectionSet;
IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
IQueryFilter pFilter = new QueryFilterClass();
foreach(int ID in selectedRightIDs)
{
pFilter.WhereClause = "RightID = " + ID.ToString();
IFeatureCursor pFeatureCursor = pFeatureClass.Search(pFilter, false);
IFeature pFeature = pFeatureCursor.NextFeature();
pFeatureSelection.Add(pFeature);
}
//if (pFeature == null)
//{
// System.Windows.Forms.MessageBox.Show("This section doesn't exist");
// return;
//}
IGeometry pgeom = (IGeometry)pFeature.Shape;
pMap.SelectByShape(pgeom, null, false);
IEnvelope pEnv = pgeom.Envelope;
pMxDoc.ActiveView.Extent = pEnv;
pMxDoc.ActiveView.Refresh();
}
}
先感谢您!