嗨,大家
我试图用一个属性的值标记一个FeatureLayer,但不知何故它失败了。我已经计算了z值,并想要标记它,但由于某种原因,它标记了另一个属性。
在CIMLabelClass中,我将表达式定义为'zValue'属性:
var labelFeatureLayer = new CIMLabelClass {Name = "labelFeatureLayer", ExpressionEngine = LabelExpressionEngine。Arcade, Expression = "$feature. "zValue", TextSymbol = SymbolFactory.Instance.ConstructTextSymbol().MakeSymbolReference(),能见度= true};var lyrDefn = fclay . getdefinition () as CIMFeatureLayer;var listLabelClasses = lyrdef . labelclasses . tolist ();listLabelClasses.Add (labelFeatureLayer);lyrDefn。LabelClasses = listLabelClasses.ToArray();fcLayer.SetDefinition (lyrDefn);fcLayer.SetLabelVisibility(真正的);
但它只是显示了一个不同的属性(在这里是objectid)
你好,
我认为您需要关闭其他现有标签类的可见性。看看Esri社区188金宝搏网址导航188金宝博复式样本LabelLineFeatures
//关闭除foreach (var lc in listLabelClasses) {lc之外的所有标签类。能见度= lc。Name == "labelFeatureLayer" ?真:假;}
下面的代码片段对我很有用:
protected override async void OnClick() {var fcLayer = mapview . activemap . getlayersasflatedlist (). oftype ()。Where(fl => fl. name == "TestPoints").FirstOrDefault();await QueuedTask.Run(() => {List newLabels = new List() {new CIMLabelClass {Name = "labelFeatureLayer", ExpressionEngine = LabelExpressionEngine。Arcade, Expression = "Geometry($feature). "z", TextSymbol = SymbolFactory.Instance.ConstructTextSymbol().MakeSymbolReference(),能见度= true}};var lyrDefn = fclay . getdefinition () as CIMFeatureLayer;lyrDefn。LabelClasses = newLabels.ToArray();fcLayer.SetDefinition (lyrDefn);fcLayer.SetLabelVisibility(真正的);});}
@GintautasKmieliauskas是正确的,因为可以有多个可见的标签。上面的代码片段从标签数组中删除了除新标签外的所有标签。