之前根据mdb数据源制作的mxd模板,添加Label表达式,使用AnnotationJScriptEngineClass写Expression没问题;
但是在应用到GDB的数据时,IPrintAndExport导出的图片注记未生效,发现GDB应用Label的表达式JS失效,要使用VB引擎AnnotationVBScriptEngineClass。
ILabelEngineLayerProperties pLabelEngineLayerProperties = new LabelEngineLayerPropertiesClass();
//设置标注符号
pLabelEngineLayerProperties.Symbol = pTextSymbol;
pLabelEngineLayerProperties.BasicOverposterLayerProperties = pBasicOverposterLayerProperties;
//声明标注的Expression是否为Simple
pLabelEngineLayerProperties.IsExpressionSimple = false;
AnnotationVBScriptEngineClass parser = new AnnotationVBScriptEngineClass();
pLabelEngineLayerProperties.ExpressionParser = parser;
string strExpression = "Function FindLabel ( [权利人], [ZDDM], [代码], [SJYTDLBM] ) \r\n If ([ZDDM]=\""+strZDDM+"\") Then\r\n FindLabel = [权利人] & vbnewline & [ZDDM] & vbnewline & [代码] & vbnewline & [SJYTDLBM]\r\n else\r\n FindLabel=[权利人]\r\nEnd if\r\nEnd Function";
pLabelEngineLayerProperties.Expression = strExpression;