按属性标签

104
3.
3周前
Daniel4
通过
新的因素

嗨,大家

我试图用一个属性的值标记一个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)

daniel4_0 - 1671629918077. - png

0荣誉
3回复
GintautasKmieliauskas
定期贡献者II

你好,

我认为您需要关闭其他现有标签类的可见性。看看Esri社区188金宝搏网址导航188金宝博复式样本LabelLineFeatures

//关闭除foreach (var lc in listLabelClasses) {lc之外的所有标签类。能见度= lc。Name == "labelFeatureLayer" ?真:假;}
0荣誉
狼
通过 金宝搏吧
金宝搏吧

下面的代码片段对我很有用:

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是正确的,因为可以有多个可见的标签。上面的代码片段从标签数组中删除了除新标签外的所有标签。

0荣誉
Daniel4
通过
新的因素

嗨,谢谢。

我用你的代码试过了@Wolf但ArcGIS Pro不显示标签。

标签标签不显示新的标签类:

daniel4_0 - 1672660750002. - png

但如果我手动在ArcGis Pro创建一个标签类(例如。'test'),突然出现了新的标签类:

daniel4_1 - 1672660974167. - png

我需要删除一些标签类之前?或者我需要做一些“第一类”的事情吗?

0荣誉