1,往地图添加IGroupLayer分组,已有分组提价到分组,没有创建分组
/// <summary>
/// 添加分组和图层
/// </summary>
/// <param name="layer">需要添加的图层</param>
/// <param name="grouplayerName">分组名称</param>
void addlayer(ILayer layer, string grouplayerName)
{
IGroupLayer basemapGroupLayer = new GroupLayerClass();
bool ishave = false;//判读分组存不存在
for (var i = 0; i < axMapControl1.LayerCount; i++)
{
ILayer pGL = axMapControl1.get_Layer(i);
if (pGL is IGroupLayer && grouplayerName.Contains(pGL.Name))//我的业务是包含名称 可以换成 ==
{
ishave = true;
basemapGroupLayer = (IGroupLayer)pGL;
break;
}
}
if (ishave)//如果分组存在
{
IMapLayers pLayers = axMapControl1.Map as IMapLayers;
pLayers.InsertLayerInGroup(basemapGroupLayer, layer, false, 0);//插入图层
}
else//分组不存在 船舰分组便添加图层
{
basemapGroupLayer.Name = grouplayerName;
basemapGroupLayer.Add(layer);
axMapControl1.AddLayer(basemapGroupLayer, 0);
}
}
2,有IGroupLayer时遍历所有图层
List<ILayer> layers = new List<ILayer>();
for (int i = 0; i < axMapControl1.LayerCount; i++)
{
if (axMapControl1.Map.get_Layer(i) is IGroupLayer)//有分组的图层
{
ICompositeLayer pGroupLayer = axMapControl1.Map.get_Layer(i) as ICompositeLayer;
//遍历分组中的图层
for (int j = 0; j < pGroupLayer.Count; j++)
{
layers.Add(pGroupLayer.get_Layer(j))
}
}
else {//没有分组的图层
layers.Add(pGroupLayer.get_Layer(j))
}
}