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. EC读书笔记系列之19:条款49、50、51、52

    条款49 了解new-handler的行为 记住: ★set_new_handler允许客户指定一个函数,在内存分配无法获得满足时被调用 ★Nothrow new是一个颇为局限的工具,∵其只适用于内存 ...

  2. HDU1789(Doing Homework again)题解

    HDU1789(Doing Homework again)题解 以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定任务分数和其截止日期,每日可完成一任务,输出当罚分尽可能小时 ...

  3. 库函数strlen源码重现及注意问题

    首先直接上源码: size_t strlen (const char * str) { const char *eos = str; while(*eos++); return(eos - str - ...

  4. CSS垂直居中解决方案

    问题场景 应用的地方比较普遍,这里有两个赤裸裸的栗子:   也有很多流行的方案,这里只针对各种方案的适用场景来做一些分析 问题抽象 其实,垂直居中问题可以简化成这样:一个容器HTML元素(#conta ...

  5. PHP扫雷(转载)。

    <?php   @$init = $_POST["init"];//game restart  @$clickvalue = $_POST["clickvalue& ...

  6. div中嵌套div速度将会同样很慢

    ---恢复内容开始--- div中嵌套了div速度将会同样很慢   最近很多老板在我们公司做企业站的时候都会要求说:我要div+css的,不要表格建的那种,那样不利于优化.但我们发现就算给他们用div ...

  7. python 网络编程第一版

    --version 1.0 只完成server/client 之间的通信. 1.server端的代码: #!/usr/bin/python #!coding:utf-8 from socket imp ...

  8. ApiDemos示例学习(2)——App->Activity->Animation

    现在介绍一下com.example.android.app包下的Animation示例. 关键类及函数: ActivityOption overridePendingTransition() make ...

  9. 迁移 Qt4 至 Qt5 的几个主要环节(数据库插件别拷错了地方)

    Qt5推出一段时间了,经过了试用,虽然还存在一些问题,比如Designer 缺少 WebView 和 ActiveQt 的UI工具,此外 WebKit 的 Release 版本似乎和Visual-St ...

  10. Android Studio下载安装及配置图文教程

    原文 http://jingyan.baidu.com/article/9c69d48f56835e13c9024e95.html AndroidStudio下载地址:https://develope ...