图层中有一种特殊的图层组,其结构可能是多种图层组合成的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);
大致用法如上