Arcgis Engine(ae)接口详解(7):地图(map)操作

            IMap map = null;
            //跟map同一层次的activeView对象,他们都是“地图”的对象,map管理地图内容,activeView管理显示内容
            IActiveView activeView = map as IActiveView;

            //获取当前地图显示范围
            IEnvelope extent = activeView.Extent;
            //设置当前地图显示范围,相当于用代码实现缩放到某个范围
            activeView.Extent = extent;

            //获取地图全图范围
            //地图浏览功能中的全图,他的范围就是这样获取
            IEnvelope fullExtent = activeView.FullExtent;

            //获取地图比例尺,同时可同于设置比例尺
            double mapScale = map.MapScale;

            //获取和设置地图单位
            esriUnits unit = map.MapUnits;
            //获取和设置地图的显示单位
            esriUnits unit2 = map.DistanceUnits;

            //刷新地图
            activeView.Refresh();

            //屏幕长度(单位是像素)转地图实际长度
            double mapLength = MapHelper.PixelsToMapUnits(activeView, 5);

            //获取Map的所有FeatureLayer
            List<IFeatureLayer> lstFeatureLayer = MapHelper.GetAllFeatureLayerInMap(map);

            if (1 == 2)
            {
                //在Map中通过真实表名获取图层,对于sde的表名不能带用户名
                IFeatureLayer featureLayer = MapHelper.GetFeatureLayerByDatasetName(map, "roadLine");


            }

            foreach (IFeatureLayer featureLayer in lstFeatureLayer)
            {
                //图层相关说明

                //IFeatureLayer代表矢量图层,而ILayer代表图层,也是所有类型图层接口都实现了ILayer,因此IFeatureLayer可以as到ILayer
                ILayer layer = featureLayer as ILayer;

                //获取和设置图层的可视状态(就是图层树界面里图层左边的checkbox)
                bool visible = layer.Visible;
                //获取或设置图层名称
                string name = layer.Name;

                //通过图层获取featureClass,是获取featureClass的方法之一。另一种方法是通过workspace获取
                //注意IFeatureLayer和IFeatureClass是两个东西,虽然平时会都叫“图层”。IFeatureClass是指物理表,而IFeatureLayer指物理表加载到地图上形成的图层,前者更多指数据,后者只图层在地图的展示设置,如样式,标注等
                IFeatureClass featureClass = featureLayer.FeatureClass;                
            }

 

posted @ 2019-06-23 21:03  cannel  阅读(1629)  评论(0编辑  收藏  举报