arcgis engine开发中图层标注设置
来源:互联网 发布:淘宝一妹子买了古着店 编辑:程序博客网 时间:2024/05/17 08:31
做了一个图层标注显示并非图层要素对应字段值,而作一个翻译,网上也未找到比较详细的说明,因此费了较长时间,这里作一个记录;
下面对整个设置过程作一个详细的标注:
IFeatureLayer feaLy = curLayer as IFeatureLayer;//把需要标注的图层转化为featurelayer
IGeoFeatureLayer geoFeaLy = feaLy as IGeoFeatureLayer;//转化为几何图层,只有几何图层才可以设置标注
if (geoFeaLy == null)
return;
geoFeaLy.DisplayAnnotation = true; //是否显示标注
ILabelEngineLayerProperties labelEngine = new LabelEngineLayerPropertiesClass();//标注属性类
IAnnotateLayerProperties labelPro = labelEngine as IAnnotateLayerProperties;//图层标注属性类
IAnnotateLayerPropertiesCollection annoLyProCol = geoFeaLy.AnnotationProperties;//图层标注属性集合类-
annoLyProCol.Clear(); //清空当前图层的标注设置
if (字典表数据) //表示不显示图层要素对应的字段值,而是把字段值翻译成对应的别的说明文字
{
IAnnotationExpressionEngine javaSrc = new AnnotationJScriptEngineClass();
labelEngine.ExpressionParser = javaSrc;//设置成javascript语言去定义
labelEngine.IsExpressionSimple = false;//表示高级定义,而非普通
//下面一段代码将根据值来写javascript语句,这里是根据一个表数据来定义的,根据当前值是否与ELEMCODE值相等,若相等则显示ELEMVALUE 的值;
List<Model.TCMODELCODE> coleList = MapContent.AoMapContent.MapInfo.GetModelCodeListByModelCodeGroupID(col.MODELCODEGROUPID);//拼接判断语句
StringBuilder sb = new StringBuilder();
foreach (Model.TCMODELCODE cc in coleList)
{
if (string.IsNullOrEmpty(sb.ToString()))
sb.Append(" if( s.toLowerCase() ==\"" + cc.ELEMCODE.ToLower() + "\") newS=\" " + cc.ELEMVALUE + "\" ;");
else
sb.Append(" else if( s.toLowerCase() ==\"" + cc.ELEMCODE.ToLower() + "\") newS=\" " + cc.ELEMVALUE + "\"; ");
}
sb.Append(" return newS ");
//上面写的是判断语句,这里作一个整体的javascript类的包装,并放在标注描述定义里
labelEngine.Expression = " function FindLabel ( [" +字段名称
+ "] ){ s = [" + 字段名称
+ "]; newS =[" + 字段名称
+ "]; " + sb.ToString() + " }";
}
else
{
//这里是普通的标注定义,只要把标注字段名用[]包,放在描述定义里即可
labelEngine.IsExpressionSimple = true;labelEngine.Expression = string.Format("[{0}]", 字段名称);
}
ITextSymbol txtSymbol = new TextSymbolClass();//设置文字显示符号
System.Drawing.Font dotNetFont = new System.Drawing.Font("宋体", mcLayerInfo.layerEffectInfo.FontSize, mcLayerInfo.layerEffectInfo.fontStyle);
txtSymbol.Font = ESRI.ArcGIS.ADF.COMSupport.OLE.GetIFontDispFromFont(dotNetFont) as stdole.IFontDisp;
IRgbColor rgbCol = new RgbColorClass();
rgbCol.Red = mcLayerInfo.layerEffectInfo.FontColor.R;
rgbCol.Green = mcLayerInfo.layerEffectInfo.FontColor.G;
rgbCol.Blue = mcLayerInfo.layerEffectInfo.FontColor.B;
txtSymbol.Color = rgbCol as IColor;
labelEngine.Symbol = txtSymbol; //把文字符号设置成标注样式
labelPro.DisplayAnnotation = true; //是否显示文字标注
ILineLabelPosition labelPositon = new LineLabelPositionClass(); //标注显示在要素几何图层的位置设置
labelPositon.Above = true;
labelPositon.Horizontal = false;
labelPositon.InLine = true;
labelPositon.OnTop = true;
labelPositon.Parallel = true;
labelPositon.ProduceCurvedLabels = true;
labelPro.LabelWhichFeatures = esriLabelWhichFeatures.esriAllFeatures;//显示要素过滤,这里是显示所有要素
IBasicOverposterLayerProperties basicOverpostLp = labelEngine.BasicOverposterLayerProperties;
basicOverpostLp.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerName;
basicOverpostLp.LineLabelPosition = labelPositon;
labelPro.FeatureLayer = feaLy; //这步不可缺少,把featurelayer设置到标注属性里
annoLyProCol.Add(labelPro); //最后一步,把标注属性放到几何图层标注属性设置里
- arcgis engine开发中图层标注设置
- ArcGIS Engine开发:地图标注(C#)
- ArcGIS Engine标注(Label)
- arcgis engine开发学习
- vc arcgis engine开发
- ArcGIS Engine开发入门教程
- Arcgis Engine 开发初步
- Arcgis engine开发
- arcgis engine 基础开发
- ArcGis Engine 开发
- ArcGIS Engine中的License设置
- ArcGIS engine中气泡标注的添加、修改!
- C#,ArcGIS Engine开发入门教程
- C#,ArcGIS Engine开发入门教程
- C#,ArcGIS Engine开发入门教程
- C#,ArcGIS Engine开发入门教程
- C#,ArcGIS Engine开发入门教程
- ArcGIS Engine+C#实例开发
- 点击屏幕隐藏软键盘的方法
- request 获取各种路径
- C++位运算原理解析
- 对象一对多set集合在jap页面的取法
- 类别,属性,成员变量,arc学习总结
- arcgis engine开发中图层标注设置
- 获取Repeater, DataList中的索引号(行号,序号)
- MongoDB for java and CRUD操作
- 文件读写 freopen ifstream ofstream
- log4j日志格式加入自定义字段信息
- 设计模式之单例模式1,2.singleton
- 使用pssh进行并行批量操作
- UVa:10000 Longest Paths (DAG上的最长路)
- 软件工程(四)面向对象技术