AE(ArcEngine)里IGroupLayer的用法

来源:互联网 发布:淘宝dsr是什么意思 编辑:程序博客网 时间:2024/05/20 14:44

图层中有一种特殊的图层组,其结构可能是多种图层组合成的IGroupLayer。
IGroupLayer解析如下

namespace ESRI.ArcGIS.Carto{    public interface IGroupLayer : ILayer    {        ESRI.ArcGIS.Geometry.IEnvelope AreaOfInterest { get; }        bool Cached { get; set; }        bool Expanded { get; set; }        double MaximumScale { get; set; }        double MinimumScale { get; set; }        string Name { get; set; }        bool ShowTips { get; set; }        ESRI.ArcGIS.Geometry.ISpatialReference SpatialReference { set; }        int SupportedDrawPhases { get; }        bool Valid { get; }        bool Visible { get; set; }        void Add(ILayer Layer);        void Clear();        void Delete(ILayer Layer);        string get_TipText(double x, double y, double Tolerance);    }}

一、获得IGroupLayer里面的子图层
IGroupLayer没有定义获取子图层的定义 要将其转换成ICompositeLayer才可获取子图层

for (int i = 0; i < axMapMain.LayerCount; i++)  {      ILayer pGL = axMapMain.get_Layer(i);      if (pGL is IGroupLayer)      {          ICompositeLayer pClyr = pGL as ICompositeLayer;          for (int j = 0; j < pClyr .Count; j++)          {              ILayer pLyr;              pLyr=pCLyr.get_Layer(j);          }      } }

二、在IGroupLayer里面操作图层
虽然没有获取图层的方法 但可以添加或者删除图层
代码如下:

if (pGL is IGroupLayer)  {      ICompositeLayer PClyr= pGL as ICompositeLayer;      for (int j = 0; j < PClyr.Count; j++)      {          if (PClyr.get_Layer(j) == iLayer)          {              IGroupLayer pGlyr= pGL as IGroupLayer;              //删除图层              PClyr.Delete(iLayer);          }      }    }  

三、在IGroupLayer里面特定位置添加图层
代码如下:

IMapLayers pMlyrs = pMap as IMapLayers;  ILayer pGlyr = pMap.get_Layer(i);  if (pGlyr is IGroupLayer)  {      //利用InsertLayerInGroup方法:第一个是GroupLayer的图层,第二个参数是要插入到组中的图层,      //第四个参数是要插入的位置      pMlyrs.InsertLayerInGroup(pGlyr, theInsertLayer, false, 3);  

大致用法如上

0 0