/// <summary> /// 设置地图框的图层数据源、图层定义查询、比例尺、地图显示范围等 /// </summary> /// <param name="graphicsContainer">图形容器</param> /// <param name="mapFrameInfo">地图框信息</param> protected virtual void SetMapFrame(IGraphicsContainer graphicsContainer, MapFrameInfo mapFrameInfo) { var map = graphicsContainer.GetMapFrame(mapFrameInfo.MapFrameName).Map; foreach (var layerInfo in mapFrameInfo.LayerInfos) { var layer = SetLayerDataSource(map, layerInfo); //设置数据源 if (layer is IFeatureLayer featureLayer) //设置定义查询 { ((IFeatureLayerDefinition)featureLayer).DefinitionExpression = layerInfo.Definition; } } if (mapFrameInfo.Scale > 0)//设置比例尺 { map.ReferenceScale = mapFrameInfo.Scale; } SetMapExtent(map, mapFrameInfo);//设置地图显示范围 }
/// <summary> /// 设置地图显示范围 /// </summary> /// <param name="map">地图</param> /// <param name="mapFrameInfo">地图框信息</param> protected virtual void SetMapExtent(IMap map, MapFrameInfo mapFrameInfo) { //若MapExtent不为null,则地图缩放至MapExtent指定的范围;否则查找LayerInfo.ZoomTo为True的图层来定位缩放 var activeView = map as IActiveView; if (mapFrameInfo.MapExtent != null) { activeView.MapZoomTo(mapFrameInfo.MapExtent, 1.3); } else { var layerInfo = mapFrameInfo.LayerInfos.FirstOrDefault(v => v.ZoomTo); if (layerInfo != null) { var featureClass = FeatureClassEx.FromPath(layerInfo.DataSource); var geometries = featureClass.QueryGeometries(layerInfo.Definition); activeView.MapZoomTo(geometries, 1.3); } } }