arcEngine添加标注有3个技术点:1,获得图层的属性字段;2,初始化符号显示控件;3,添加标注。

获得图层的属性字段:
  //每个图层都是一个表的图形化显示,ILayer跟ITale可以互相转换
    ITable pTable = pLayer as ITable;
            IField pField = null;
            for (int i = 0; i < pTable.Fields.FieldCount; i++)
            {
                pField = pTable.Fields.get_Field(i);   
//下面3种类型的字段不能显示                      
              if(pField.Type!=esriFieldType.esriFieldTypeXML&&
                      pField.Type!=esriFieldType.esriFieldTypeRaster&&pField.Type!=esriFieldType.esriFieldTypeGeometry)
                cmbField.Items.Add(pField.AliasName);
            }
初始化符号显示控件:
string sInstall = ESRI.ArcGIS.RuntimeManager.ActiveRuntime.Path;   //获得arcgis的安装路径        
         axSymbologyControl1.LoadStyleFile(sInstall + "\\Styles\\ESRI.ServerStyle");  //打开样式文件
//显示文字符号(esriStyleClassTextSymbols)
        axSymbologyControl1.GetStyleClass(esriSymbologyStyleClass.esriStyleClassTextSymbols).SelectItem(0);
 
添加标注:
IGeoFeatureLayer geoFeatureLayer = pLayer as IGeoFeatureLayer;
         //AnnotationProperties属性控制标注的内容、格式
            geoFeatureLayer.AnnotationProperties.Clear();
  //标注放置的位置
            IBasicOverposterLayerProperties blProperty = new BasicOverposterLayerPropertiesClass();
            ILabelEngineLayerProperties llProperty = new LabelEngineLayerPropertiesClass();
 
            ITextSymbol textSymbol = new TextSymbolClass();   
            textSymbol = (ITextSymbol)styleGalleryItem.Item;     
            IColor ic = new RgbColorClass();
            ic.RGB = colorPickerButton1.SelectedColor.B * 65536 + colorPickerButton1.SelectedColor.G * 256 + colorPickerButton1.SelectedColor.R;
            textSymbol.Color = ic;
 
            stdole.IFontDisp tempFont = new stdole.StdFont() as stdole.IFontDisp;
            tempFont.Name = cmbFont.SelectedNode.Text;
            DevComponents.Editors.ComboItem cmbItem = (DevComponents.Editors.ComboItem)cmbSize.SelectedItem;
            tempFont.Size = Convert.ToDecimal(cmbItem.Text);
            textSymbol.Font = tempFont;
            textSymbol.HorizontalAlignment = esriTextHorizontalAlignment.esriTHACenter;
 
   //标注内容表达式
            string pLabel = "[" + (string)cmbField.SelectedItem + "]";
            llProperty.Expression = pLabel;
           //复杂表达式,下次博客内容
            if (cmbField.SelectedIndex == cmbField.Items.Count - 1)
            {
                llProperty.IsExpressionSimple = false;
                IAnnotationExpressionEngine annoEE = new AnnotationJScriptEngine();
                llProperty.ExpressionParser = annoEE;
                llProperty.Expression = fieldExpression;
            }
            //llProperty.ExpressionParser
 
            blProperty.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape;
            llProperty.BasicOverposterLayerProperties = blProperty;
            llProperty.Symbol = textSymbol;
            geoFeatureLayer.AnnotationProperties.Add(llProperty as IAnnotateLayerProperties);
            geoFeatureLayer.DisplayAnnotation = true;
            pMap.Refresh();

arcEngine添加标注(上)的更多相关文章

  1. 【百度地图API】如何在地图上添加标注?——另有:坐标拾取工具+打车费用接口介绍

    原文:[百度地图API]如何在地图上添加标注?--另有:坐标拾取工具+打车费用接口介绍 摘要: 在这篇文章中,你将学会,如何利用百度地图API进行标注.如何使用API新增的打车费用接口. ------ ...

  2. 【百度地图API】情人节求爱大作战——添加标注功能

    原文:[百度地图API]情人节求爱大作战--添加标注功能 任务描述: 2月2日是除夕,2月14立马来!即将到来的情人节,你想送TA一份什么礼物呢? 不如,在你们居住的地方,画个大大的桃心,表达你对TA ...

  3. ajaxFileUpload+struts2实现多文件上传(动态添加文件上传框)

    上篇文章http://blog.csdn.net/itmyhome1990/article/details/36396291介绍了ajaxfileupload实现多文件上传, 但只是固定的文件个数,如 ...

  4. 使用 GMap.NET 实现添加标注、移动标注功能。(WPF版)

    前言 在WPF嵌入地图,有两种方式: 浏览器方式:控件方式. 1)浏览器方式就是使用浏览器控件WebBrowser,设置好网址就行了.这种方式与地图的交互不太直接,需要懂html.javascript ...

  5. npm的用户名添加不上的原因

    npm添加不上的错误e401 1.用cnpm提交,会提交的tao.org这个域名了,用npm提交试试 2.如果npm提交不上,那就查看配置文件配置中 registry=http://registry. ...

  6. iOS第三方地图-百度地图常用功能使用(POI搜索,地理正反编码,定位,添加标注)

    百度地图官网: http://developer.baidu.com/map/index.php?title=iossdk 百度地图集成 1.引入相关包

  7. ArcEngine 图层标注 (根据字段、角度)

    转自chanyinhelv原文 ArcEngine 图层标注 (根据字段.角度) 今天做了一个用AE来控制图层是否显示标注,以及已哪一个字段作为标注的字段,以哪一个字段作为标注的角度,现将代码写下来, ...

  8. ArcGIS 在地图上添加标注

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. Html-IOS下input的样式添加不上的解决方案

    问题描述: <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml&qu ...

随机推荐

  1. [stack]Evaluate Reverse Polish Notation

    Total Accepted: 55722 Total Submissions: 249668 Difficulty: Medium Evaluate the value of an arithmet ...

  2. Windows中进程的内存结构

    基础知识: 栈是一种简单的数据结构,是一种只允许在其一端进行插入或删除的线性表.允许插入或删除操作的一端称为栈顶,另一端称为栈底,对栈的插入和删除操作被称为入栈和出栈. 有一组CPU指令可以实现对进程 ...

  3. js第四章作用域

    一.动态的属性 //创建了一个变量并且保存在了变量person中 var person = new Object(); //为该对象添加了一个名为name的属性,将字符串值‘NiCholas’赋值给n ...

  4. Python学习笔记(一)基础

    学习资料 跟着廖雪峰的Python教程学习Python,大家可以去官方网站查看学习教程.使用的Python版本为3.0.x,解释器为CPython.本系列博客为学习笔记,记录跟随廖老师所学知识,同时会 ...

  5. 14-利用SVD简化数据

    参考:http://blog.csdn.net/geekmanong/article/details/50494936 http://www.2cto.com/kf/201503/383087.htm ...

  6. debian install & configure(2)-drivers-ati

    依赖apt-get install build-essential cdbs fakeroot dh-make debhelper debconf libstdc++6 dkms libqtgui4 ...

  7. Linux系统针对网卡中断的优化处理

    摘要: 中断: 当网卡接收到数据包后,会触发硬中断,通知CPU来收包.硬中断是一个CPU和网卡交互的过程.这其实会消耗CPU资源.特别是在使用速度极快的万兆网卡 之后,大量的网络交互使得CPU很大一部 ...

  8. EMV标准

    EMV标准是由国际三大银行卡组织--Europay(欧陆卡,已被万事达收购).MasterCard(万事达卡)和Visa(维萨)共同发起制定的银行卡从磁条卡向智能IC卡转移的技术标准,是基于IC卡的金 ...

  9. docker 私有仓库内容

    docker:/root# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES eb6d0ef3b9e2 linux123 ...

  10. 解决 MySQL manager or server PID file could not be found! 的方法

    [root@centos var]# service mysqld stop MySQL manager or server PID file could not be found!       [F ...