【二次开发】CityMaker几何体——标注

**

三维中的图层标注

**

一:技术原理

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. JS
//创建图层
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);
}    

三:注意事项

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值