在 GraphicsLayer 中为图形图标添加标签

Add label to graphic icon in GraphicsLayer

我正在使用以下代码创建一个 GraphicsLayer:

 const labelClass= { 
      symbol: { type: "text", color: "green", font: { family: "Sans", size: 12, weight: "bold"  }},
            labelPlacement: "above-center"
            };
gl=new GraphicsLayer({ labelingInfo: [labelClass]})
app.map.add(app.gl);

然后使用此代码向其添加图标:

let graphic=new Graphic(
     geometry:{ type: "point", lat, lon },      
     symbol:{ type: "picture-marker", url:"popover.png", width:19, height:13 },
     });
gl.add(graphic);

如何告诉 arcGIS 用每个图标绘制什么文本?

GraphicsLayer 没有 labelingInfo 属性。对于标签,您需要使用 FeatureLayer,事实上,由于新库版本建议使用 FeatureLayer,基本上您需要在几乎所有可以使用 [=11= 的情况下使用它] 在较旧的库版本中。

ArcGIS API - GraphicsLayer

It is generally preferred to construct a FeatureLayer with its source property when working with client-side graphics since the FeatureLayer has more capabilities than the GraphicsLayer, including rendering, querying, and labeling.

因此,回到问题,您可以使用labelExpressionInfo 属性 将要显示的标签文本绑定到要素的属性值。像这样,

labelExpressionInfo: {
 expression: "$feature.NAME"
}

其中 NAME 是您要用作标签的属性。