Engine中如何对设置了Definition的图层实现缩放到图层?

设置了Definition的图层如何可以实现缩放到该图层时缩放位置为过滤后的数据? 目前如果使用AreaOfInterest缩放的范围为所有数据的范围。
已邀请:

朱新颖

赞同来自:

【解决办法】:
确实使用AreaOfInterest不起作用,获取的仍然是整个图层的内容,可以通过IFeatureLayer.Search根据过滤条件获取所有的Feature,然后使用IEnvelope.Unin()将其合并,最后缩放到该区域


IMap map = axMapControl1.ActiveView.FocusMap; 
IFeatureLayer featureLayer = map.get_Layer(0) as IFeatureLayer; 
IFeatureLayerDefinition def = featureLayer as IFeatureLayerDefinition; 
string whereclause = FID <5; 
def.DefinitionExpression = whereclause; 
IQueryFilter queryFilter = new QueryFilterClass(); 
queryFilter.WhereClause = whereclause; 
IFeatureCursor cursor = featureLayer.Search(queryFilter, true); 
IFeature fea = cursor.NextFeature(); 
IEnvelope envelope = new EnvelopeClass(); 
while (fea!=null) 

envelope.Union(fea.ShapeCopy.Envelope); 
fea = cursor.NextFeature(); 
 } 
axMapControl1.Extent = envelope; 
axMapControl1.Refresh(); 

要回复问题请先登录注册