グラフィック・オブジェクトのラベルを作成するために、IlvMapLabelManager クラスは、
IlvMapLabelFactory インターフェースを実装するラベル・ファクトリーに依存しています。
このインターフェースを実装しているオブジェクトは、指定された IlvGraphic
Ilv
オブジェクトの適切な IlvMapLabelingLabel インスタンスを返す役目を果たします。IlvGraphic オブジェクトです。これは、次のメソッドの実装によって行われます。labeler.setView(view); layerToLabel.getStyle().setLabelAttribute("NAME"); labeler.addLayer(layerToLabel); labeler.performLabeling(); public IlvMapLabelingLabel[] getGisLabel(IlvGraphic comp);
デフォルト・ラベル・ファクトリーは以下のタスクを実行します。
- 指定された IlvGraphic オブジェクトから属性を抽出し、(ラベル付けされる IlvMapLayer の IlvMapStyle 内の ラベル属性に従います)、 その
String
表記をラベルのテキストとして取得します。 - 次に、ラベリングされているグラフィック・オブジェクトの種類に応じて、 IlvMapLabelingLabel クラスの適切なインスタンスを作成します。アンカー・ポイントのあるオブジェクト用の
- 折れ線オブジェクト用の IlvMapLineLabel (例えば、ラインに沿ったラベル)。
- 領域の可視部分内に配置されたラベルの付いた閉じた領域用の IlvMapAreaLabel。
IlvMapLabelManager はファクトリーのこのデフォルト実装を使用しますが、ラベリング対象およびその方法についてより詳細に制御する場合は、独自の実装を提供することができます。デフォルト・ラベル・ファクトリーを、独自のラベル・ファクトリーに置き換えるには、次の処理を行います。
IlvMapLabelFactory myLabelFactory = new myLabelFactory(); //Your own implementation. //Get the map labeler. IlvMapLabeler labeler = IlvMapLabelerProperty.GetMapLabeler(manager); //Set the factory, if the labeler is an IlvMapDefaultLabeler instance. if(labeler instanceof IlvMapDefaultLabeler) { IlvMapDefaultLabeler dflt = (IlvMapDefaultLabeler)labeler; dflt.setLabelFactory(myLabelFactory); }
レンダラー・パラメーターの制御
独自の IlvMapLabelFactory を実装する場合は、コンストラクターで作成した IlvMapLabelingLabel の各インスタンスにレイアウトおよびレンダリング・パラメーターのセットを指定することができます。