arcEngine添加标注(上)

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();

时间: 2024-10-25 17:58:31

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

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

原文:[百度地图API]如何在地图上添加标注?--另有:坐标拾取工具+打车费用接口介绍 摘要: 在这篇文章中,你将学会,如何利用百度地图API进行标注.如何使用API新增的打车费用接口. ------------------------------------------------------------------------------------------------------- 哇,好久没有上来了.主要是因为最近工作繁忙,加上休息时间被各种排练.社团活动占满,导致木有更新此博客.

Android应用中使用百度地图API并添加标注(一)

网上一些资料这种的内容已经过时了,这里是最新的内容,如果哪里不对,请吐槽... 1)下载百度地图移动版API(Android)开发包 要在Android应用中使用百度地图API,就需要在工程中引用百度地图API开发包,这个开发包包含两个文件: 下载地址:http://pan.baidu.com/s/1i31enrB 2)申请API Key //包名 格式:例如:B7:6C:CF:E2:47:50:9B:3E:34:F7:08:72:F3:AC:F1:BE:55:D3:77:FB;com.maji

高德地图调用和添加标注

看过高德地图API的同学都知道,高德地图不同端调用是不一样的,作为一个前端菜鸟,前一阵分别在pc端和移动端分别调用了高德地图.情况是这个样子的,PC端呢我们可以用高德API的web端的javascript代码.调用没有问题,具体是这样的: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title

百度地图循环添加标注,并循环为标注添加信息窗口问题解决

原文:百度地图循环添加标注,并循环为标注添加信息窗口问题解决 最近几年在搞地图方面的开发,主要是循环为坐标添加标注并为标注添加弹出信息窗口,起初我的代码如下: var map = new BMap.Map("Mapcontainer"); var JsonObj = eval(JsonStr); if (JsonObj != null) { for (var i = 0; i < JsonObj.length; i++) { var point = new BMap.Point(

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

转自chanyinhelv原文 ArcEngine 图层标注 (根据字段.角度) 今天做了一个用AE来控制图层是否显示标注,以及已哪一个字段作为标注的字段,以哪一个字段作为标注的角度,现将代码写下来,以备以后差用. public void EnableFeatureLayerLabel(IFeatureLayer pFeaturelayer, string sLableField, IRgbColor pRGB, int size, string angleField) { //判断图层是否为空

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

上篇文章http://blog.csdn.net/itmyhome1990/article/details/36396291介绍了ajaxfileupload实现多文件上传, 但只是固定的文件个数,如果需求不确定是多少文件 则我们就需要动态的添加文件上传框,以实现灵活性. 基于上篇基本框架是不变的,主要修改以下几个方面 1.jQuery实现动态添加删除文件上传框 2.获取文件上传框的ID 3.ajaxfileupload.js里将ID数组转换为需要的Object数组 依次解决上面问题 一.实现动

项目添加服务器上数据库正常,添加本地的数据库出现问题(The user specified as a definer (&#39;root&#39;@&#39;%&#39;) does not exist)

1.项目连接服务器上mysql数据库正常,连接本地的数据库出现问题: The user specified as a definer ('root'@'%') does not exist 2. 权限问题,授权 给 root  所有sql 权限 mysql> grant all privileges on *.* to [email protected]"%" identified by "."; Query OK, 0 rows affected (0.00

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

百度地图官网: http://developer.baidu.com/map/index.php?title=iossdk 百度地图集成 1.引入相关包 注:不需要使用地图功能的可以不用boundle包,模拟器使用的framework和真机不一样具体看官网 2.info.plist中 3.在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC. 4.将一个文件设置为.mm 百度地图使用 1.AppDelegate中注册 _mapManager

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

原文:[百度地图API]情人节求爱大作战--添加标注功能 任务描述: 2月2日是除夕,2月14立马来!即将到来的情人节,你想送TA一份什么礼物呢? 不如,在你们居住的地方,画个大大的桃心,表达你对TA的爱意吧! 如何实现: 给地图增加一个事件监听,addEventListener: 当鼠标点击地图时,首先获取改点坐标,其次在改点坐标处增加一个红色标注. 图示: 运行代码,请点击这里. 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr