Ejemplo n.º 1
0
        /// <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);//设置地图显示范围
        }
Ejemplo n.º 2
0
        /// <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);
                }
            }
        }