遍历MapControl中的图层方法

通过IMap中的get_layers()可以遍历MapControl中当前的图层。此方法可以通过指定UID对图层进行过滤或者分类。 

1. 遍历矢量图层 

public IEnumLayer GetFeatureLayers()         
{ 
UID uid = new UIDClass(); 
uid.Value = "{40A9E885-5533-11d0-98BE-00805F7CED21}";//FeatureLayer
IEnumLayer layers = frmMap.m_mapCtrl.Map.get_Layers(uid, true);   
return layers; 
} 

2. 遍历栅格图层 

publicIEnumLayerGetRasterLayers()
{
	UIDuid=newUIDClass();
	uid.Value="{D02371C7-35F7-11D2-B1F2-00C04F8EDEFF}";//RasterLayer
	IEnumLayerlayers=frmMap.m_mapCtrl.Map.get_Layers(uid,true);
	returnlayers;
}

3.遍历其它图层 

{6CA416B1-E160-11D2-9F4E-00C04F6BC78E} IDataLayer (包括所有类型的图层)
{40A9E885-5533-11d0-98BE-00805F7CED21} IFeatureLayer 
{E156D7E5-22AF-11D3-9F99-00C04F6BC78E} IGeoFeatureLayer 
{34B2EF81-F4AC-11D1-A245-080009B6F22B} IGraphicsLayer 
{5CEAE408-4C0A-437F-9DB3-054D83919850} IFDOGraphicsLayer 
{0C22A4C7-DAFD-11D2-9F46-00C04F6BC78E} ICoverageAnnotationLayer 
{EDAD6644-1810-11D1-86AE-0000F8751720} IGroupLayer  

4. 通过图层名获取图层接口

在AE开发中,这是常用到的功能,配合上面的方法,很容易实现。 

//获取矢量图层接口 
     public IFeatureLayer GetFeatureLayer(string layerName)
     { 
            //get the layers from the maps 
            IEnumLayer layers = GetFeatureLayers();
             layers.Reset();
             ILayer layer = null; 
            while ((layer = layers.Next()) != null)
           { 
                     if (layer.Name == layerName)
                     return layer as IFeatureLayer;
             } 
            return null;
         } 

//获取栅格图层接口         
public IRasterLayer GetRasterLayer(string layerName)
         { 
            //get the layers from the maps 
            IEnumLayer layers = GetRasterLayers();
             layers.Reset();
             ILayer layer = null; 
            while ((layer = layers.Next()) != null)
             { 
                    if (layer.Name == layerName)
                     return layer as IRasterLayer;
             } 
            return null;
         } 
/// <summary>
        /// 获得要素图层
        /// </summary>
        /// <param name="pMap"></param>
        /// <returns></returns>
        public static IFeatureLayer[] GetFeatureLayers(IMap pMap)
        {
            IFeatureLayer pFeatLayer;
            ICompositeLayer pCompLayer;
            List<IFeatureLayer> pList = new List<IFeatureLayer>();
            //遍历地图
            for (int i = 0; i < pMap.LayerCount; i++)
            {
                if (pMap.get_Layer(i) is IFeatureLayer)
                {
                    //获得图层要素
                    pFeatLayer = pMap.get_Layer(i) as IFeatureLayer;
                    pList.Add(pFeatLayer);
                }
                else if (pMap.get_Layer(i) is IGroupLayer)
                {
                    //遍历图层组
                    pCompLayer = pMap.get_Layer(i) as ICompositeLayer;
                    for (int j = 0; j < pCompLayer.Count; j++)
                    {
                        if (pCompLayer.get_Layer(j) is IFeatureLayer)
                        {
                            pFeatLayer = pCompLayer.get_Layer(j) as IFeatureLayer;
                            pList.Add(pFeatLayer);
                        }
                    }
                }
            } 
            return pList.ToArray();
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QQ359677345

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值