3.1.2.2 bounding_themes要素
<bounding_themes>要素には、次の定義が含まれます。
<!ELEMENT bounding_themes (#PCDATA) >
<!ATTLIST bounding_themes
border_margin CDATA #IMPLIED
preserve_aspect_ratio CDATA "TRUE"
size_hint CDATA #IMPLIED
>
マップのデータ・サイズを事前に決められない場合、1つ以上のテーマを枠テーマとして指定できます。たとえば、一定の基準を満たすデータ・ポイントをすべて選択する動的テーマが1つあり、選択したすべてのデータ・ポイントを囲むことのできる大きさのマップ上に、それらを表示するとします。このような場合、<bounding_themes>要素を使用してそのような動的テーマの名前を指定できます。MapViewerでは、まず<bounding_themes>要素で指定されたテーマを処理し、枠テーマにより生成された地物に基づいて枠ボックスを生成してから、その新しい枠ボックスに応じてその他のテーマを準備します。
マップ・リクエストで<box>要素または<center>要素を指定した場合、<bounding_themes>要素は無視されます。
border_marginは、生成された枠ボックスの各マージンに追加する割合を指定するオプション属性です。たとえば、0.025の値を指定すると、生成された枠ボックスの左右のマージンに幅の2.5%が追加されます(その結果、x軸で幅が合計5%拡張されます)。同様に上下のマージンにも高さの2.5%が追加されます。デフォルト値は0.05で、各マージンに5%が追加されます。
preserve_aspect_ratioは、枠テーマの処理後に生成された枠ボックスを、マップ画像またはデバイスと同じ縦横比になるように、さらに変更するかどうかを示すオプション属性です。デフォルトはTRUEで、結果のマップ画像の変形を防ぐため、縦横比を保つように枠ボックスを変更します。
size_hintは、元のデータ単位でマップの垂直範囲を指定するオプション属性です。たとえば、ユーザーのデータが10進表記の度数で示されている場合、size_hint属性は、10進表記の緯度を指定します。ユーザーのデータがメートル単位で投影されている場合、MapViewerではsize_hintがメートルで解釈されます。
size_hint属性を使用して、境界制限を拡張できます。これは、枠テーマにポイント地物が1つだけ含まれる場合に便利です。たとえば、ジオコーディング問合せから得られた1つのポイントのみが枠テーマの場合もあります。そのポイントをマップの中央に配置し、そのポイントから境界線を拡張する場合もあります。
要素自体には、カンマで区切られた枠テーマの名前のリストが含まれます。テーマ名は、マップ・リクエストまたはマップ・リクエストで使用されているベース・マップのテーマ名と完全に一致する必要があります。次の例では、theme1とtheme3という2.3つの枠テーマを含み、2つのテーマに関連付けられた地物の保持のために必要な最小限の枠ボックスの4つのマージンすべてに2%(border_margin="0.023")を追加するマップ・リクエストを示しています。
<?xml version="1.0" standalone="yes"?>
<map_request title="Bounding Theme Example"
title_style="titleText"
datasource="mvdemo"
basemap="demo_map"
width="600"
height="500"
bgcolor="#a6cae0"
antialiase="false"
mapfilename="tilsmq202"
format="PNG_STREAM">
<bounding_themes border_margin="0.023">theme1, theme3</bounding_themes>
<themes>
<theme name="theme1"
min_scale="5.0E7"
max_scale="0.0">
<jdbc_query datasource="mvdemo"
jdbc_srid="8307"
spatial_column="geom"
label_column="STATE"
render_style="myPattern"
label_style="myText">SELECT geom, state from states where state_abrv='IL'</jdbc_query>
</theme>
<theme name="theme3"
min_scale="5.0E7"
max_scale="0.0">
<jdbc_query datasource="mvdemo"
jdbc_srid="8307"
spatial_column="geom"
label_column="STATE"
render_style="myPattern"
label_style="myText">SELECT geom,state from states where state_abrv='IN'</jdbc_query>
</theme>
</themes>
<styles>
<style name="myPattern">
<svg width="1in"
height="1in">
<desc />
<g class="area"
style="stroke:#6666e0;fill:#d6ccff;fill-opacity:128;line-style:L.STATE BOUNDARY" />
</svg>
</style>
<style name="myText">
<svg width="1in"
height="1in">
<g class="text"
float-width="1.0"
style="font-style:bold;font-family:Arial;font-size:16pt;fill:#6600ff">
Hello World!
</g>
</svg>
</style>
<style name="titleText">
<svg width="1in"
height="1in">
<g class="text"
float-width="1.0"
style="font-style:bold;font-family:Helvetica;font-size:18pt;fill:#333333">
Hello World!
</g>
</svg>
</style>
</styles>
</map_request>
前述の例では、2つの<theme>要素(どちらもmyPatternというレンダリング・スタイルを指定)での指定に従い、イリノイ州とインディアナ州を示すマップが表示されます。myTextスタイルでは、Map Builderツールなどのスタイル作成ツールでスタイルをプレビューする場合にのみ、「Hello World!」というテキストが表示されます。このスタイルをマップに適用すると、MapViewerがテーマから取得する実際のテキスト・ラベルが提供されます。
次の図は、前述の例の表示を示しています。
親トピック: マップ・リクエストDTD
