一、技术原理
CityMaker中图层(featurelayer)标注指的通过属性字段设置图层的标注样式,具体分类详见如图:

图层标注有两种方法:
·创建图层的时候设置textrender;
·通过setTextRender设置textrender
文字渲染器ITextRender分为简易文字渲染对象ISimpleTextRender、多专题的文字渲染器IValueMapTextRender、配置显示提示信息IToolTipTextRender
简易文字渲染对象一般是通过设置属性字段文字的样式来设置
多专题的文字渲染主要是用渲染方案来设置渲染的效果,渲染方案有两个渲染的规则,一个是范围规则,也就是可以设置在规定范围中显示某种渲染效果,另一个是唯一值渲染规则,也就是可以根据某一类型来实现渲染的效果
二、图层标注
1. .NET
public void textRender() {//文字渲染风格ISimpleTextRender textRender = new SimpleTextRender();textRender.Expression = "''..$(oid)";ITextSymbol textSymbol = new TextSymbol();TextAttribute textAttribute = new TextAttribute();textAttribute.TextColor = 0xff0000ff;textSymbol.TextAttribute = textAttribute;textSymbol.PivotAlignment = gviPivotAlignment.gviPivotAlignBottomCenter;textSymbol.VerticalOffset = 10;// 注意:必须设置symbol,默认文字不显示textRender.Symbol = textSymbol;//创建图层IFeatureLayer featureLayer = rendercontrol.ObjectManager.CreateFeatureLayer(fc, geoName, textRender, null, __rootId);}//1、简易文字渲染,通过设置颜色,来渲染模型public void SimpleSymbol() {// 文字渲染风格ISimpleTextRender textRender = new SimpleTextRender();textRender.Expression = "''..$(oid)";ITextSymbol textSymbol = new TextSymbol();TextAttribute textAttribute = new TextAttribute();textAttribute.TextColor = 0xffCCCCCC;textSymbol.TextAttribute = textAttribute;textSymbol.PivotAlignment = gviPivotAlignment.gviPivotAlignBottomCenter;textSymbol.VerticalOffset = 10;textRender.Symbol = textSymbol;BuildingFl.SetTextRender(textRender) ;}//2、多专题的文字渲染器,通过设置范围来渲染不同范围的模型public void ValueSymbol() {//定义文字渲染风格IValueMapTextRender textRender = new ValueMapTextRender();textRender.Expression = "''..$(oid)";//文字属性TextAttribute textAttribute = new TextAttribute();textAttribute.TextColor = 0xffff0000;textAttribute.Font = "黑体";textAttribute.TextSize = 50;//文字样式ITextSymbol textSymbol = new TextSymbol();textSymbol.TextAttribute = textAttribute;textSymbol.PivotAlignment = gviPivotAlignment.gviPivotAlignBottomCenter;//渲染规则IUniqueValuesRenderRule uniqValRule = new UniqueValuesRenderRule();uniqValRule.LookUpField = "oid";uniqValRule.AddValue("1073");//渲染方案ITextRenderScheme textScheme = new TextRenderScheme();textScheme.Symbol = textSymbol;textScheme.AddRule(uniqValRule);textRender.AddScheme(textScheme);BuildingFl.SetTextRender(textRender);}
2. JavaScript
//创建图层function createFeaturelayer(){//初始化一个简易文字渲染var textRender= __g.new_SimpleTextRender;//文字渲染器//此处用的是模型图层为例,其他数据类型类似,只是渲染的文字风格不同textRender.expression = "''..$(oid)";var textSymbol = __g.new_TextSymbol;//文字样式var textAttribute = __g.new_TextAttribute;//文字属性textAttribute.textColor =0x64FFFFFF;textSymbol.textAttribute=textAttribute;textSymbol.pivotAlignment = gviPivotAlignment.gviPivotAlignBottomCenter;textSymbol.verticalOffset = 10;textRender.symbol=textSymbol;var fl = __g.objectManager.createFeatureLayer(fc, geoName, textRender, null, __rootId);}//1、简易文字渲染function changeSimpleSymbol(){var textRender= __g.new_SimpleTextRender;//文字渲染器textRender.expression = "''..$(oid)";var textSymbol = __g.new_TextSymbol;//文字样式var textAttribute = __g.new_TextAttribute;//文字属性textAttribute.textColor =0xff097CEA;textSymbol.textAttribute=textAttribute;textSymbol.pivotAlignment = gviPivotAlignment.gviPivotAlignBottomCenter;textSymbol.verticalOffset = 10;textRender.symbol=textSymbol;buildingFl.setTextRender(textRender);}//2、多专题的文字渲染器,通过设置范围来渲染不同范围的模型function changeValueSymbol(){//文字渲染风格var textRender = __g.new_ValueMapTextRender;textRender.expression = "''..$(oid)";//文字属性var textAttribute = __g.new_TextAttribute;textAttribute.textColor = 0xff097CEA;textAttribute.font = "黑体";textAttribute.textSize = 50;//文字样式var textSymbol = __g.new_TextSymbol;textSymbol.textAttribute = textAttribute;textSymbol.pivotAlignment = gviPivotAlignment.gviPivotAlignBottomCenter;//渲染规则var uniqValRule = __g.new_UniqueValuesRenderRule;uniqValRule.lookUpField = "oid";uniqValRule.addValue("1073");//渲染方案var textScheme = __g.new_TextRenderScheme;textScheme.symbol = textSymbol;textScheme.addRule(uniqValRule);textRender.addScheme(textScheme);buildingFl.setTextRender(textRender);}
3. 注意
- 文字渲染 必须设置symbol,默认文字不显示
- 简易文字渲染包含各种数据类型的图层设置,不仅是模型图层,也可以是点线面图层
- 专题渲染可以同时添加多个渲染规则
