3.1.2.11 legend要素

legend要素には、次の定義が含まれます:

<!ELEMENT legend (column,themes)? >
<!ATTLIST legend
  bgstyle CDATA #implied
  font CDATA #implied
  location_x CDATA #implied
  location_y CDATA #implied
  offset_x CDATA #implied
  offset_y CDATA #implied
  profile (MEDIUM|SMALL|LARGE) "MEDIUM"
  position (SOUTH_WEST|SOUTH_EAST|SOUTH|NORTH|
  NORTH_WEST|NORTH_EAST|EAST|WEST|CENTER) "SOUTH_WEST"
>
<!ELEMENT column entry+ >
<!ATTLIST entry
  is_title (true|false) "false"
  is_separator (true|false) "false"
  tab CDATA "0"
  style CDATA #implied
  text CDATA #implied
  text_size CDATA #implied
  width CDATA #implied
  height CDATA #implied
>
<!ELEMENT themes theme+ >
<!ATTLIST theme
  name CDATA #REQUIRED
>

<legend>要素は、生成されたマップの上に凡例(マップ挿入図)を描画し、マップの視覚的な外観をユーザーにとってより意味のあるものにするために使用します。<legend>要素の主要部分は1つ以上の<column>要素であり、それぞれが凡例内の列を定義します。(<column>要素が存在しない場合、「マップ凡例」で説明しているとおり、自動凡例が作成されます。) 列が1つの凡例では、すべてのエントリが上から下まで配置されます。列が2つの凡例では、1つ目の列を左側にして2つの列が並べられ、それぞれの列に独自の凡例エントリが含まれます。図2-14では、列が1つの凡例を示しています。図3-5では、列が2つの凡例を示しています。

bgstyleは、凡例のバックグラウンド・スタイル全体を指定するオプション属性です。これは、Scalable Vector Graphics (SVG)に似た構文を持つ文字列を使用し、凡例の枠ボックスの塗りおよびストロークの色を指定します。不透明度(fill-opacityまたはstroke-opacity)の値を指定した場合、塗りおよびストロークの色は透明または一部透明になる場合があります。次の例では、白い半透明のバックグラウンド、および赤のストローク(凡例ボックスの境界)を指定しています。

bgstyle="fill:#ffffff;fill-opacity:128;stroke:#ff0000"

fontは、凡例画像に表示されるテキストに使用するフォント名を指定するオプション属性です。Javaでサポートされている論理フォント名(serif、sansserif、monospaced、dialogまたはdialoginput)を指定できます。MapViewerサーバーが稼働しているシステムで使用可能な物理フォント名も指定できます。

location_xおよびlocation_yは、凡例の始点のX座標とY座標(画面単位)を指定するオプション属性です。これらの属性を指定すると、position属性による指定より優先されます。

offset_xおよびoffset_yは、position属性と併用されるオプション属性です。位置ヒントに対する枠線からのデフォルト距離は、10ピクセルです。これらのオフセット・パラメータは、デフォルト値より優先されます。

profileは、マップ上の凡例の相対的なサイズを指定するオプション属性であり、SMALLMEDIUM(デフォルト)またはLARGEのいずれかのキーワードを使用します。

positionは、凡例を描画するマップ上の位置を指定するオプション属性です。デフォルトはSOUTH_WESTであり、結果のマップの左下角に凡例が描画されます。

is_titleは、<entry>要素のオプション属性です。この値がTRUEの場合、エントリは列のタイトルとして使用されます。つまり、説明テキストが通常の凡例テキストよりも目立つフォントで表示され、エントリに対して定義されたその他のスタイル属性は無視されます。デフォルトの設定はFALSEです。

is_separatorは、<entry>要素のオプション属性です。この値がTRUEの場合、エントリは列の縦方向の間隔を空けるための空白行の挿入に使用されます。デフォルトの設定はFALSEです。

tabは、<entry>要素のオプション属性です。これは、エントリを列の左余白からインデントするためのタブ位置の数を指定します。デフォルトは0(ゼロ)で、この場合インデントは行われません。

styleは、<entry>要素のオプション属性です。これは、エントリの一部として描画されるMapViewerスタイル(色または画像など)の名前を指定します。

textは、<entry>要素のオプション属性です。これは、エントリに含められる説明テキスト(関連付けられた色または画像の簡潔な説明など)を指定します。

text_sizeは、<entry>要素のオプション属性です。これは、エントリに含められる説明テキストのサイズ(ディスプレイ単位)を指定します。指定された値で、MapViewerの事前定義済プロファイルのサイズがオーバーライドされます。

widthおよびheightはオプション属性で、この両方によって汎用エントリのサイズ(デバイス単位)を指定します。値が指定されると、MapViewerの小、中、大のテキストのプロファイル値に応じたデフォルトが無視されます。次の例は、図2-14の凡例に対する<legend>要素の指定を示しています。

<legend bgstyle="fill:#ffffff;fill-opacity:128;stroke:#ff0000"
        position="NORTH_WEST">
    <column>
        <entry text="Map Legend"
               is_title="true" />
        <entry style="M.STAR"
               text="center point" />
        <entry style="M.CITY HALL 3"
               text="cities" />
        <entry is_separator="true" />
        <entry style="C.ROSY BROWN STROKE"
               text="state boundary" />
        <entry style="L.PH"
               text="interstate highway" />
        <entry text="County population:" />
        <entry style="V.COUNTY_POP_DENSITY"
               tab="1" />
    </column>
</legend>

前述の例は、次のとおりです。

  • バックグラウンド・カラーは不透明度値が128 (fill-opacity:128)です。つまり、白いバックグラウンドが半透明になります。
  • 凡例の境界ボックスは赤(stroke:#ff0000)になります。
  • 凡例の境界ボックスは、ディスプレイの左上部分(position="NORTH_WEST")に配置されます。
  • profile属性(デフォルト値はMEDIUM)が指定されていないため、凡例はデフォルト・サイズになります。
  • 凡例は単一列となり、エントリが上から下まで配置されます。
  • 1つ目のエントリは凡例タイトルで、テキストはMap Legendです。
  • 4つ目のエントリは、空白行を追加するためのセパレータです。
  • 7つ目のエントリは説明テキスト(County population:)です。生成されたマップのユーザーが、拡張スタイルを指定する次(および最後)のエントリにこのテキストを関連付けます。拡張スタイルには独自の記述テキストが含まれることが多いため、どのテキストが凡例のどの部分に適用されるのかユーザーが混乱しないようにする際に、このCounty population:というテキスト・エントリが役立ちます。
  • 最後のエントリは拡張スタイル(style="V.COUNTY_POP_DENSITY")を指定します。これはタブ1つ分インデントされているため(tab="1")、ユーザーにとって、様々な人口密度範囲を識別する色やテキストが、前にあるCounty population: という説明テキストと区別しやすいものになります。