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. VB.NET 初涉线程的定义和调用

    什么是线程 说话一:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独 ...

  2. Eclipse开启Mybatis-config.xml配置文件智能提示

    使用Java开发的程序员一般在学习的时候,可能都会涉及到使用配置文件,在使用Eclipse类似IDE进行编辑配置配置文件的时候,如果配置文件不能自动联想,是一件比较恼人的事情.笔者这里拿mybatis ...

  3. JavaScript计算加减乘除

    //加法函数 function jiafa(a,b){ var a=parseInt(document.getElementById("number1").value); //pa ...

  4. .offset()与.position()区别

    jQuery中有两个获取元素位置的方法offset()和position(),两者的定义如下:   offset():获取匹配元素在当前视口的相对偏移.返回的对象包含两个整形属性:top 和 left ...

  5. jquery插件的编写

    今天尝试了一下自己编写插件.最简单的jquery效果,返回顶部的按钮. 增加多个全局函数 添加多个全局函数,可采用如下定义: Java代码 jQuery.foo = function() { aler ...

  6. 几种常用单片机I/O口线的驱动能力

    摘要: 详细分析了几种常见单片机的I/O口结构,并据此分析其驱动能力大小 在控制系统中,经常用单片机的I/O口驱动其他电路.几种常用单片机I/O口驱动能力在相关的资料中的说法是:GMS97C2051. ...

  7. 用做网页开发经历了三个阶段(附长篇讨论) good

    用做网页开发经历了三个阶段:第一阶:傻干阶段使用Intraweb,傻瓜型,无需知道javascript,html,css,会pascal就可以了. 第二阶:困惑阶段使用Intraweb,有很多限制,比 ...

  8. Qt部件学习之-烧鹅

    1,布局管理器 candidates

  9. Qt学习--部件深入--烤猪蹄

    1,进程条--向用户显示程序的当前状态,向用户提示该任务需要多长时间才能够完成. Qt-ProgressBar创建进程条,QProgressBar,为了使进程条担当起进程指示功能,需要执行定义进程条的 ...

  10. skiing(搜索+记忆化搜索)

    skiing 时间限制:3000 ms  |  内存限制:65535 KB 难度:5   描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...