一、技术原理

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

CityMaker几何体——标注 - 图1

图层标注有两种方法:
·创建图层的时候设置textrender;
·通过setTextRender设置textrender

文字渲染器ITextRender分为简易文字渲染对象ISimpleTextRender、多专题的文字渲染器IValueMapTextRender、配置显示提示信息IToolTipTextRender

简易文字渲染对象一般是通过设置属性字段文字的样式来设置
多专题的文字渲染主要是用渲染方案来设置渲染的效果,渲染方案有两个渲染的规则,一个是范围规则,也就是可以设置在规定范围中显示某种渲染效果,另一个是唯一值渲染规则,也就是可以根据某一类型来实现渲染的效果

二、图层标注

1. .NET

  1. public void textRender() {
  2. //文字渲染风格
  3. ISimpleTextRender textRender = new SimpleTextRender();
  4. textRender.Expression = "''..$(oid)";
  5. ITextSymbol textSymbol = new TextSymbol();
  6. TextAttribute textAttribute = new TextAttribute();
  7. textAttribute.TextColor = 0xff0000ff;
  8. textSymbol.TextAttribute = textAttribute;
  9. textSymbol.PivotAlignment = gviPivotAlignment.gviPivotAlignBottomCenter;
  10. textSymbol.VerticalOffset = 10;
  11. // 注意:必须设置symbol,默认文字不显示
  12. textRender.Symbol = textSymbol;
  13. //创建图层
  14. IFeatureLayer featureLayer = rendercontrol.ObjectManager.CreateFeatureLayer(
  15. fc, geoName, textRender, null, __rootId);
  16. }
  17. //1、简易文字渲染,通过设置颜色,来渲染模型
  18. public void SimpleSymbol() {
  19. // 文字渲染风格
  20. ISimpleTextRender textRender = new SimpleTextRender();
  21. textRender.Expression = "''..$(oid)";
  22. ITextSymbol textSymbol = new TextSymbol();
  23. TextAttribute textAttribute = new TextAttribute();
  24. textAttribute.TextColor = 0xffCCCCCC;
  25. textSymbol.TextAttribute = textAttribute;
  26. textSymbol.PivotAlignment = gviPivotAlignment.gviPivotAlignBottomCenter;
  27. textSymbol.VerticalOffset = 10;
  28. textRender.Symbol = textSymbol;
  29. BuildingFl.SetTextRender(textRender) ;
  30. }
  31. //2、多专题的文字渲染器,通过设置范围来渲染不同范围的模型
  32. public void ValueSymbol() {
  33. //定义文字渲染风格
  34. IValueMapTextRender textRender = new ValueMapTextRender();
  35. textRender.Expression = "''..$(oid)";
  36. //文字属性
  37. TextAttribute textAttribute = new TextAttribute();
  38. textAttribute.TextColor = 0xffff0000;
  39. textAttribute.Font = "黑体";
  40. textAttribute.TextSize = 50;
  41. //文字样式
  42. ITextSymbol textSymbol = new TextSymbol();
  43. textSymbol.TextAttribute = textAttribute;
  44. textSymbol.PivotAlignment = gviPivotAlignment.gviPivotAlignBottomCenter;
  45. //渲染规则
  46. IUniqueValuesRenderRule uniqValRule = new UniqueValuesRenderRule();
  47. uniqValRule.LookUpField = "oid";
  48. uniqValRule.AddValue("1073");
  49. //渲染方案
  50. ITextRenderScheme textScheme = new TextRenderScheme();
  51. textScheme.Symbol = textSymbol;
  52. textScheme.AddRule(uniqValRule);
  53. textRender.AddScheme(textScheme);
  54. BuildingFl.SetTextRender(textRender);
  55. }

2. JavaScript

  1. //创建图层
  2. function createFeaturelayer(){
  3. //初始化一个简易文字渲染
  4. var textRender= __g.new_SimpleTextRender;//文字渲染器
  5. //此处用的是模型图层为例,其他数据类型类似,只是渲染的文字风格不同
  6. textRender.expression = "''..$(oid)";
  7. var textSymbol = __g.new_TextSymbol;//文字样式
  8. var textAttribute = __g.new_TextAttribute;//文字属性
  9. textAttribute.textColor =0x64FFFFFF;
  10. textSymbol.textAttribute=textAttribute;
  11. textSymbol.pivotAlignment = gviPivotAlignment.gviPivotAlignBottomCenter;
  12. textSymbol.verticalOffset = 10;
  13. textRender.symbol=textSymbol;
  14. var fl = __g.objectManager.createFeatureLayer(fc, geoName, textRender, null, __rootId);
  15. }
  16. //1、简易文字渲染
  17. function changeSimpleSymbol(){
  18. var textRender= __g.new_SimpleTextRender;//文字渲染器
  19. textRender.expression = "''..$(oid)";
  20. var textSymbol = __g.new_TextSymbol;//文字样式
  21. var textAttribute = __g.new_TextAttribute;//文字属性
  22. textAttribute.textColor =0xff097CEA;
  23. textSymbol.textAttribute=textAttribute;
  24. textSymbol.pivotAlignment = gviPivotAlignment.gviPivotAlignBottomCenter;
  25. textSymbol.verticalOffset = 10;
  26. textRender.symbol=textSymbol;
  27. buildingFl.setTextRender(textRender);
  28. }
  29. //2、多专题的文字渲染器,通过设置范围来渲染不同范围的模型
  30. function changeValueSymbol(){
  31. //文字渲染风格
  32. var textRender = __g.new_ValueMapTextRender;
  33. textRender.expression = "''..$(oid)";
  34. //文字属性
  35. var textAttribute = __g.new_TextAttribute;
  36. textAttribute.textColor = 0xff097CEA;
  37. textAttribute.font = "黑体";
  38. textAttribute.textSize = 50;
  39. //文字样式
  40. var textSymbol = __g.new_TextSymbol;
  41. textSymbol.textAttribute = textAttribute;
  42. textSymbol.pivotAlignment = gviPivotAlignment.gviPivotAlignBottomCenter;
  43. //渲染规则
  44. var uniqValRule = __g.new_UniqueValuesRenderRule;
  45. uniqValRule.lookUpField = "oid";
  46. uniqValRule.addValue("1073");
  47. //渲染方案
  48. var textScheme = __g.new_TextRenderScheme;
  49. textScheme.symbol = textSymbol;
  50. textScheme.addRule(uniqValRule);
  51. textRender.addScheme(textScheme);
  52. buildingFl.setTextRender(textRender);
  53. }

3. 注意

  1. 文字渲染 必须设置symbol,默认文字不显示
  2. 简易文字渲染包含各种数据类型的图层设置,不仅是模型图层,也可以是点线面图层
  3. 专题渲染可以同时添加多个渲染规则