レイヤーおよびスタイルの概要

レイヤーおよびスタイルのクラス・ダイアグラムを「レイヤーおよびスタイル UML ダイアグラム」に示します。
map_layerstyle.png
レイヤーおよびスタイル UML ダイアグラム
このセクションで説明されているコードをすべて含む マップ・ビルダー のデモ用ソース・コードについては、 <installdir> /jviews-maps89/samples/mapbuilder/index.html をご覧ください。

地図レイヤーについて

IlvMapLayer クラスは、地図レイヤー、つまり地図作成 テーマ を表します。これは、スタイル ( IlvMapStyle、またはそのサブクラスの 1 つ) をグラフィック・オブジェクトを含む IlvManagerLayer と関連付けます。
地図レイヤーは、ツリー構造に配置され、 IlvMapLayerTreeProperty を使用してマネージャーに保存されます。「地図レイヤー・ツリー」を参照してください。
各地図レイヤーは、 IlvMapLayerTreeNode に付加されており、これは親および子レイヤーに関する必要な情報を含んでいます。このノードを使用して、以下のようにレイヤー階層を移動することができます。
String SVGpath = "C:/maps/map.svg";
IlvSVGDataSource source = new IlvSVGDataSource(SVGpath); 
source.setManager(getView().getManager());
source.setDestinationBounds(lonMinRad,latMinRad,lonMaxRad,latMaxRad);
メモ
代わりに、IlvSVGDataSource.setInternalTransformation を呼び出して、カスタマイズされた変換を使用することもできます。
source.start(); 
IlvMapLayerTreeNode node = mapLayer.getNode();
for (int i = 0; i < node.getChildCount(); i++) {
  IlvMapLayerTreeNode child=(IlvMapLayerTreeNode) node.getChildAt(i);
  IlvMapLayer childLayer = (IlvMapLayer) node.getUserObject(); 
  ... do something with child layer
}
ほとんどの地図レイヤーはデータ・ソースに付加されています。データ・ソースは、(たいていはオンデマンド・ローディングで) 地図データを読み込むときと再投影するときに、正しいグラフィック・オブジェクトをマネージャー・レイヤーに配置する役割を果たします。このルールの例外は、複合レイヤーです。複合レイヤーは、属性継承を使用して、サブレイヤーのグループ化およびそれらのスタイルを管理するためのみに使用されます (下記を参照)。

地図スタイルについて

JViews Maps のすべてのスタイルは、基本クラス IlvMapStyle のサブクラスです。
このクラスは、1 組の属性へのアクセスを提供し、各スタイル・サブクラスに応じて通常はセッター・ゲッターのペアからもアクセスできます。
例えば、以下のいずれかを使用して、ビューの可視性設定を変更できます。
style.setAttribute(IlvMapStyle.VISIBLE_IN_VIEW,Boolean.TRUE);
style.setVisibleInView(true);
リスナーを書いて登録することで、地図スタイル内のあらゆる変更をキャッチすることができます。以下に例を示します。
StyleListener listener = new StyleListener() {
   public void styleChanged(StyleEvent event) {
      if(IlvMapStyle.ALPHA.equals(event.getAttribute())) {
         //  ... do something when transparency changes
      }
   }
};
...
myStyle.addStyleListener(listener);

スタイル階層

階層からのスタイルおよび属性値は、この階層を通じて継承することができます。スタイル属性が親スタイルから継承される場合、この親属性値は、そのスタイルを使用するオブジェクトを表示するときに使用されます。
API では強制されていませんが、スタイル階層は地図レイヤー階層と同様に作成してください。これは、地図レイヤーがレイヤー・ツリー・モデルに挿入されるときに行うことができます。
IlvMapLayerTreeModel ltm = 
IlvMapLayerTreeProperty.GetMapLayerTreeModel(manager);
ltm.addChild(parentLayer, layer);
IlvMapStyle parentStyle = layer.getParent().getStyle();
IlvMapStyle childStyle = layer.getStyle();
childStyle.setParent(parentStyle);

共通スタイリング・プロパティー

レイヤーの種類にかかわらず、レイヤーのスタイルには常に以下の基本プロパティーがあります。
共通スタイリング・プロパティー
プロパティーの名前
内容
VISIBLE_IN_VIEW
IlvManagerLayer が地図ビューで表示されるかどうかを示します。
VISIBLE_IN_OVERVIEW
IlvManagerLayer が地図概要で表示されるかどうかを示します。
ATTRIBUTE_INFO
すべてのオブジェクト・プロパティーを説明するのに使用される IlvAttributeInfoProperty を含みます。これは、ラベル属性チェック・ボックスに表示される可能なプロパティー名の一覧を提供するのに使用されています。この属性は、地図レイヤー・ツリー・パネルでユーザーが変更することはできません。
LABEL_ATTRIBUTE
ヌル値、またはこの地図レイヤーをラベリングするときに使用されるプロパティーの名前を含みます (通常、ATTRIBUTE_INFO 属性によって提供されている一覧で選択)。
ALWAYS_ON_TOP
付加されている地図レイヤーが通常の平面、または重なった平面に置かれているかを示します。これは、グリッド、ラベル、メジャーなどの重なったレイヤーにのみ使用します。
LEGEND_GROUP
凡例で地図レイヤーを使用および表示されている論理名。
CATEGORY
同じ凡例ライン上にある複数のレイヤーをグループ化する識別名。
ALPHA
マネージャー・レイヤーの透明度のレベル。