概要
ArcGIS Pro SDK for .NET を使用して、ラベルを表示する方法と、ラベルのフォントや色を変更する方法をご紹介します。
サンプル コード
ラベルの操作は LabelClass クラスを使用します。ラベルの色を変更したい場合は CIMColor クラスを使用し、フォントやテキストの大きさを変更したい場合は SymbolFactory クラスの ConstructTextSymbol メソッドを使用します。
//マップに追加されている最上位のレイヤーを取得
Map map = MapView.Active.Map;
FeatureLayer featureLayer = map.GetLayersAsFlattenedList()[0] as FeatureLayer;
QueuedTask.Run(() =>
{
//ラベル クラスの取得 ※<>は半角に置き換え実行してください。
List<LabelClass> listLabelClasses = featureLayer.LabelClasses.ToList();
LabelClass theLabelClass = listLabelClasses.FirstOrDefault();
//条件式(デフォルトでは Arcade が条件式の言語と設定されている)
theLabelClass.SetExpression("$feature.SIKUCHOSON");
//色を作成(青色を作成)
CIMColor textColor = CIMColor.CreateRGBColor(0, 0, 215);
//新規にテキスト シンボルを作成
//引数1: 色、引数2:フォントサイズ、引数3: フォント名、引数4: フォント スタイル
CIMTextSymbol newTextSymbol = SymbolFactory.Instance.ConstructTextSymbol(textColor, 14, "Arial", "Bold");
//新規に作成したテキスト シンボルをラベル クラスに設定
theLabelClass.SetTextSymbol(newTextSymbol);
//ラベル表示を ON
featureLayer.SetLabelVisibility(true);
});
備考
LabelClass の SetExpression メソッドでは、ArcGIS Pro 上で選択されている言語(デフォルトは Arcade) のみでしか条件式を記述することができません。
他の言語をプログラミングを使用して設定したい場合は、LabelClass の SetExpressionEngine メソッドを使用し、引数に LabelExpressionEngine 列挙型で使用したい言語を設定します。
theLabelClass.SetExpressionEngine(LabelExpressionEngine.Python);
theLabelClass.SetExpression("[SIKUCHOSON]");
このナレッジはお役に立ちましたか?
フィードバックをいただきありがとうございます!