Arcengine 图层添加标注,且标注之间不相互遮盖

本文介绍了一种在地图上为特定图层添加标注的方法。通过使用IFeatureLayer和IGeoFeatureLayer接口,可以定制标注的样式,如字体、颜色及大小,并设置显示规则。文章详细展示了如何创建标注对象并将其应用到地图上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//添加图层标注
public void AddAnnotate(ILayer layer, string fieldName)
        {
            IFeatureLayer pFeatureLayer = layer as IFeatureLayer;
            IGeoFeatureLayer pGeoLayer = pFeatureLayer as IGeoFeatureLayer;
            IAnnotateLayerPropertiesCollection IPALPColl = pGeoLayer.AnnotationProperties;
            IPALPColl.Clear();

            IRgbColor pColor = GetColor(85, 105, 255);
            IFontDisp pFont = new StdFont()
            {
                Name = "宋体",
                //Bold = true
            } as IFontDisp;

            ITextSymbol pTextSymbol = new TextSymbolClass()
            {
                Color = pColor,
                Font = pFont,
                Size = 8
            };
            IBasicOverposterLayerProperties pBasicOverLayerPro = new BasicOverposterLayerPropertiesClass();
            pBasicOverLayerPro.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint;
            pBasicOverLayerPro.GenerateUnplacedLabels = true;
            pBasicOverLayerPro.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerPart;

            //创建标注对象
            ILabelEngineLayerProperties pLableEngine = new LabelEngineLayerPropertiesClass()
            {
                Symbol = pTextSymbol,
                IsExpressionSimple = true
            };
           
            string express = "[" + fieldName + "]";
            pLableEngine.Expression = express;


            IOverposterLayerProperties2 pOverLayerProper = pBasicOverLayerPro as IOverposterLayerProperties2;
            pOverLayerProper.TagUnplaced = true;//设置该属性,目的是不被其他element遮挡
            pLableEngine.BasicOverposterLayerProperties = pBasicOverLayerPro;
            IAnnotateLayerProperties pAnnoPros = pLableEngine as IAnnotateLayerProperties;
            pAnnoPros.AnnotationMinimumScale = 500000;
            IPALPColl.Add(pAnnoPros);
            pGeoLayer.DisplayAnnotation = true;
            pGeoLayer.DisplayField = fieldName;
            MapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, null);
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值