使用不可機能: MapViewer JSPライブラリ: MapViewer JSPライブラリは使用不可になり、今後のドキュメントのリリースには含まれません。かわりに、より包括的で新しいMapViewer Java APIの使用を推奨します。さらに、タグを使用する場合は、JDeveloper Application Development Framework(ADF)のGeoMapタグの使用を検討してください。 |
この章では、HTMLファイルでJavaServer Pages(JSP)タグを使用して、MapViewerにリクエストを発行する方法について説明します。JSPタグは、XMLのような構文によって、マップ・リクエストの設定、ズームおよびパン、ならびにユーザーがクリックした地物の非空間属性の識別など、一連の重要な(ただし完全ではない)MapViewer機能を提供します。
注意: MapViewer JSPタグ・ライブラリは、Oracle9i ASリリース9.0.2またはスタンドアロンのOC4Jリリース9.0.2では機能しません。必要最低限となるバージョンは、Oracle9i ASリリース9.0.3またはスタンドアロンのOC4Jリリース9.0.3です。 |
次のいずれかの方法を使用して、位置ベースのアプリケーションを開発できます。
XML APIを使用(第3章を参照)
JavaBeanベースAPIを使用(第4章を参照)
XMLタグまたはHTMLタグ(あるいはその両方)が含まれ、Oracle提供のカスタムJSPタグ(この章で説明)が含まれるJSPファイルを使用
XML APIやJavaBeanベースAPIを使用する方法は、柔軟性が高く、プログラム・ロジックをより強力に制御できますが、多くの場合、JSPファイルを作成した方が容易かつ便利です。ただし、5.3項の例5-1で示すgetMapTitle
メソッドへのコールの場合のように、JavaServer Page内にJava APIメソッドへのコールを組み込むことができます。
同一セッション有効範囲内のすべてのMapViewer JSPタグは、単一のMapViewer Beanへのアクセスを共有します。
この章の主な項目は、次のとおりです。
MapViewer JSPタグを使用するには、タグを使用したWebアプリケーションが、MapViewerが動作するOC4Jインスタンスと同じインスタンスにデプロイされるかどうかに応じて、1つまたは2つの手順を実行する必要があります。
Webアプリケーションが、MapViewerが動作するOC4Jインスタンスと同じインスタンスにデプロイされる場合、この手順をスキップしてステップ2に進みます。
Webアプリケーションが独立したOC4Jインスタンスにデプロイされる場合は、mvclient.jar
ファイル($MAPVIEWER/web/WEB-INF/lib
ディレクトリ内)およびmvtaglib.tld
ファイル($MAPVIEWER/web/WEB-INF
ディレクトリ内)を、そのOC4Jインスタンスのアプリケーション・デプロイ・ディレクトリにコピーする必要があります。続いて、次の例で示すように、アプリケーションのweb.xml
ファイルで<taglib>
要素を定義する必要があります。
<taglib> <taglib-uri> http://xmlns.oracle.com/spatial/mvtaglib </taglib-uri> <taglib-location> /WEB-INF/mvtaglib.tld </taglib-location> </taglib>
JSPページの上部かつ他のMapViewerタグの前でtaglib
ディレクティブを使用して、(カスタム・タグを使用したJSPページで必要であるように)タグ・ライブラリをインポートします。例:
<%@ taglib uri="http://xmlns.oracle.com/spatial/mvtaglib" prefix="mv" %>
taglib
ディレクティブには、次の2つのパラメータがあります。
uri
は、MapViewerタグ・ライブラリを識別する一意の名前であり、この値は、MapViewerのweb.xml
初期化ファイルで定義されているhttp://xmlns.oracle.com/spatial/mvtaglib
である必要があります。
prefix
は、MapViewerタグ・ライブラリに属するページ上のタグの接頭辞を識別します。JSPページ内で一意であるかぎり任意の接頭辞を使用できますが、MapViewerで推奨される接頭辞はmv
で、このマニュアルの例でもこれを使用しています。
次の例では、setParamタグで使用されるmv
接頭辞を示しています。
<mv:setParam title="Hello World!" bgcolor="#ffffff" width="500" height="375" antialiasing="true"/>
MapViewerの数種類の操作を次のようなタグで実行できます。
MapViewer Beanを作成し、現行セッション内に配置するには、initタグを使用します。initタグは、他のMapViewer JSPタグの前に指定する必要があります。
マップ表示およびオプションでベース・マップに関するパラメータを設定するには、setParamタグを使用します。
テーマおよび凡例を追加するには、addPredefinedThemeタグ、addJDBCThemeタグ、importBaseMapタグおよびmakeLegendタグを使用します。
マップ・リクエストを発行して処理するには、runタグを使用します。
この項では、MapViewerとの通信に使用できるOracle提供のJSPタグについて説明します。表5-1では、各タグをリストし、タグで指定される情報について簡潔に説明しています。
タグ名 | 説明 |
---|---|
|
MapViewer Beanを作成して現行セッション内に配置する。他のMapViewer JSPタグの前に指定しなければならない。 |
|
現行マップ・リクエストに対して1つ以上のパラメータを指定する。 |
|
事前定義済テーマを現行マップ・リクエストに追加する。 |
|
動的に定義されたテーマをマップ・リクエストに追加する。 |
|
指定されたベース・マップに含まれる事前定義済テーマを、現行マップ・リクエストに追加する。 |
|
生成されたマップ上に描画する凡例(マップ挿入図)を作成する。 |
|
現行マップ・リクエストの指定パラメータに関連付けられた値を取得する。 |
|
MapViewerサービスによって生成された、現在使用可能なマップ画像のHTTP URLを取得する。 |
|
マップ表示の指定ポイントまたは矩形と相互作用する空間地物に関連付けられた非空間属性(列)値を取得し、またオプションで、そのポイントまたは矩形を識別するマーカー・スタイルを使用する。 |
|
現行マップ・リクエストを、処理のためMapViewerサービスに発行する。ズームインとズームアウト、マップの中心の再設定またはこれらの操作の組合せを実行できます。 |
別途記載されている場合を除き、JSP式を使用して、実行時にタグ属性値を設定できます。使用する書式は次のとおりです。
<mv:tag attribute="<%= jspExpression %>" >
次の各項では、各タグで使用できるすべてのパラメータに関する参照情報(パラメータ名、説明、そのパラメータが必須かどうか)をタグ名のアルファベット順に紹介します。パラメータが必須である場合、タグに含める必要があります。必須ではないパラメータを省略した場合は、デフォルト値が使用されます。
JSPタグの参照項目では簡単な例を示しており、5.3項ではより包括的な例を示しています。
addJDBCTheme
タグは、動的に定義されたテーマをマップ・リクエストに追加します。(3.2.9項で説明している<jdbc_query>
要素と同じ処理を実行します。)
表5-2では、addJDBCTheme
タグのパラメータをリストしています。
表5-2 addJDBCThemeタグのパラメータ
パラメータ名 | 説明 | 必須 |
---|---|---|
|
動的に定義されたテーマの名前。関連付けられたMapViewer Beanに追加済のすべてのテーマ間で一意でなければならない。 |
はい |
|
テーマが表示されるようにするために、表示をこの値までズームインする必要のある値(2.4.1項を参照)。 |
いいえ |
|
テーマが表示されないようにするために、この値を超えるまで表示をズームインする必要がある値(2.4.1項を参照)。 |
いいえ |
|
マップ表示のジオメトリ・オブジェクトが含まれるSDO_GEOMETRY型の列。 |
はい |
|
レンダリングされるデータの座標系(SDO_SRID値)。このパラメータを指定しない場合、NULLの座標系とみなされる。 |
いいえ |
|
データベースへの接続情報が含まれるデータソース・インスタンスの名前。 |
はい脚注 1 |
|
データベースに接続するためのホスト名。 |
はい脚注 1 |
|
データベースに接続するためのポート名。 |
はい脚注 1 |
|
データベースに接続するためのSID。 |
はい脚注 1 |
|
データベースに接続するためのユーザー名。 |
はい脚注 1 |
|
データベースに接続するためのパスワード。 |
はい脚注 1 |
|
データベースへの接続に使用するOracle JDBCドライバ( |
いいえ |
|
|
いいえ |
|
このテーマについて取得された空間データのレンダリングに使用されるスタイルの名前。ポイント地物のデフォルトは45度回転した赤の十字形、線および曲線のデフォルトは1ピクセル幅の黒い線、ポリゴンのデフォルトは内側が半透明のダークグレーである黒い枠線。 |
いいえ |
|
このテーマの空間地物にラベル・テキストを描画する際に使用される、テキスト・スタイルの名前。 |
いいえ |
|
各地物(行)のラベル・テキストが含まれる、指定された問合せのSELECT構文リスト内の列。 |
いいえ |
脚注 1 datasource
か、jdbc_host
、jdbc_port
、jdbc_sid
、jdbc_user
およびjdbc_password
の組合せを指定する必要があります。
次の例では、bigCities
という新規動的テーマを作成します。このテーマは、mvdemo
データソースを使用し、空間データが含まれる列としてLOCATION列を指定して実行されます。WHERE句の大なり(>)記号がここでは有効である点に注意してください。
<mv:addJDBCTheme name="bigCities" datasource="mvdemo" spatial_column="location"> SELECT location, name FROM cities WHERE pop90 > 450000 </mv:addJDBCTheme>
addPredefinedTheme
タグは、事前定義済テーマを現行マップ・リクエストに追加します。(3.2.20項で説明している<theme>
要素と同じ処理を実行します。) 事前定義済テーマは、関連付けられたMapViewer Beanで保守されているテーマ・リストの最後に追加されます。
表5-3では、addPredefinedTheme
タグのパラメータをリストしています。
表5-3 addPredefinedThemeタグのパラメータ
パラメータ名 | 説明 | 必須 |
---|---|---|
|
現行マップ・リクエストに追加される事前定義済テーマの名前。このテーマは、関連するMapViewer Beanで使用されるデータソースのUSER_SDO_THEMESビューに存在しなければならない。 |
はい |
|
テーマのロード元のデータソース名。このパラメータを指定しない場合、マップ・リクエストのデフォルト・データソースが使用される。 |
いいえ |
|
テーマが表示されるようにするために、表示をこの値までズームインする必要のある値(2.4.1項を参照)。 |
いいえ |
|
テーマが表示されないようにするために、この値を超えるまで表示をズームインする必要がある値(2.4.1項を参照)。 |
いいえ |
次の例では、THEME_DEMO_CITIES
というテーマを現行マップ・リクエストに追加しています。
<mv:addPredefinedTheme name="THEME_DEMO_CITIES"/>
getMapURL
タグは、MapViewerサービスによって生成された、現在使用可能なマップ画像のHTTP URL(Uniform Resource Locator)を取得します。このマップ画像のURLは、関連するMapViewer Beanで保持され、runタグの使用後まで変更されません。
getMapURL
タグに、パラメータはありません。
次の例では、画像のソース(SRC
キーワード値)の指定でgetMapURL
タグを使用し、現在使用可能なマップ画像を表示します。
<IMG SRC="<mv:getMapURL/>" ALIGN="top">
getParam
タグは、現行マップ・リクエストの指定パラメータに関連付けられた値を取得します。
表5-4では、getParam
タグのパラメータをリストしています。
表5-4 getParamタグのパラメータ
パラメータ名 | 説明 | 必須 |
---|---|---|
|
値を取得するパラメータの名前。setParamタグの有効なパラメータ名のいずれかでなければならない。パラメータ名は大/小文字が区別されます。(この属性にはリテラル値を使用する必要があり、JSP式の値は使用できない。) |
はい |
次の例では、現行マップ・リクエストのtitle
パラメータの値を表示します。
<P> The current map title is: <mv:getParam name="title"/> </P>
identify
タグは、マップ表示の指定ポイントまたは矩形と相互作用する空間地物に関連付けられた非空間属性(列)値を取得し、またオプションで、そのポイントまたは矩形を識別するマーカー・スタイルを使用します。たとえば、ユーザーがマップをクリックし、クリック時のマウス・ポインタのXおよびY座標値を取得した場合、そのポイントと相互作用する空間ジオメトリに関連付けられた非空間列の値を取得できます。例としては、ユーザーがシカゴのあるポイントをクリックした場合に、アプリケーションで都市名、州の略記およびシカゴの人口を表示し、さらにマップ上のクリック箇所の近くに都市マーカーも表示するような場合が考えられます。
属性は、文字列配列のString[][]
配列で返されます。この配列は、スクリプト変数としてこのタグによって公開されます。
フェッチする非空間列のリストは、タグ本体の中にカンマ区切りリストの形で指定する必要があります。このリストは、MapViewer Beanによって問合せのSELECT構文のリストの作成に使用されます。
オプションで、スタイル属性の使用およびマーカー・スタイルの指定により識別される各地物に、ハイライト・マーカーを関連付けることができます。ハイライト・マーカーが含まれる新規マップを表示するには、getMapURLタグを使用する。
表5-5では、identify
タグのパラメータをリストしています。
表5-5 identifyタグのパラメータ
パラメータ名 | 説明 | 必須 |
---|---|---|
|
返された非空間属性値の公開に使用されるスクリプト変数の名前。1つ目の配列には列名が含まれる。(この属性にはリテラル値を使用する。JSP式の値は使用できない。) |
はい |
|
非空間情報の取得元であるMapViewerデータソースの名前。 |
いいえ |
|
|
はい |
|
指定ポイントまたは矩形との空間相互作用がチェックされるジオメトリ・オブジェクトが含まれるSDO_GEOMETRY型の列。(この属性にはリテラル値を使用する。JSP式の値は使用できない。) |
はい |
|
|
いいえ |
|
ポイントのX縦座標値。または、 |
はい |
|
ポイントのY縦座標値。または、 |
はい |
|
矩形の右上角のX縦座標値。 |
いいえ |
|
矩形の右上角のY縦座標値。 |
いいえ |
|
指定ポイントまたは矩形と相互作用する地物の上にマーカーを描画する際に使用されるマーカー・スタイルの名前。ハイライト・マーカーが含まれる新規マップを表示するには、getMapURLタグを使用する。 |
いいえ |
次の例では、見出し行、および指定ポイント(ユーザーがクリックした都市など)と空間的に相互作用する各都市につき1行を含むHTML表を作成します。各行には、非空間データ、つまり都市名、人口および州の略記が格納されます。関連する都市(1つまたは複数)に関する非空間情報を格納する文字列配列のString[][]
配列は、スクリプト変数attrs
によって公開されます。タグの後のスクリプトレットは配列を通してループし、HTML表(この場合は、1つの都市に関する情報を格納)を出力します。
<mv:identify id="attrs" style="M.CYAN PIN" table="cities" spatial_column="location" x="100" y="200"> City, Pop90 Population, State_abrv State </mv:identify> <% if(attrs!=null && attrs.length>0) { out.print("<CENTER> <TABLE border=\"1\">\n"); for(int i=0; i<attrs.length; i++) { if(i==0) out.print("<TR BGCOLOR=\"#FFFF00\">"); else out.print("<TR>\n"); String[] row = attrs[i]; for(int k=0; k<row.length; k++) out.print("<TD>"+row[k]+"</TD>"); out.print("</TR>\n"); } out.print("</TABLE></CENTER>"); } %>
importBaseMap
タグは、指定されたベース・マップに含まれる事前定義済テーマを、現行マップ・リクエストに追加します。(このタグには、basemap
属性とともにsetParamタグを使用した場合と同じ効果があります。)
表5-6では、importBaseMap
タグのパラメータをリストしています。
表5-6 importBaseMapタグのパラメータ
パラメータ名 | 説明 | 必須 |
---|---|---|
|
現行マップ・リクエストのテーマ・リストの最後に事前定義済テーマが追加されるベース・マップの名前。このベース・マップは、関連するMapViewer Beanで使用されるデータソースのUSER_SDO_MAPSビューに存在しなければならない。 |
はい |
次の例では、現行マップ・リクエストのテーマ・リストの最後に、demo_map
というベース・マップ内の事前定義済テーマを追加します。
<mv:importBaseMap name="demo_map"/>
init
タグはMapViewer Beanを作成して現行セッション内に配置します。このBeanは同一セッションにおいて、他のすべてのMapViewer JSPタグによって共有されます。init
タグは、他のMapViewer JSPタグの前に指定する必要があります。
表5-7では、init
タグのパラメータをリストしています。
表5-7 initタグのパラメータ
パラメータ名 | 説明 | 必須 |
---|---|---|
|
MapViewerサービスのUniform Resource Locator(URL)。書式は、 |
はい |
|
マップのリクエストおよびマッピング・データの取得時に使用されるMapViewerデータソースの名前。データソースを作成していない場合は、 |
はい |
|
このタグで作成されるMapViewer Beanの参照に使用できる名前。(この属性にはリテラル値を使用する。JSP式の値は使用できない。) |
はい |
次の例では、id
値がmvHandle
であるデータソースmvdemo
を作成します。
<mv:init url="http://mycompany.com:8888/mapviewer/omserver" datasource="mvdemo" id="mvHandle"/>
makeLegend
タグは、ユーザー指定のXML凡例指定を受け入れ、スタンドアロンのマップ凡例画像を作成します。凡例画像はMapViewerサービスにより生成され、その画像のURLが関連するMapViewer Beanに返されます。このタグにより、URLがスクリプト変数として公開されます。
タグの本体には、<legend>
要素が含まれる必要があります。<legend>
要素およびその属性の詳細は、3.2.11項を参照してください。
表5-8では、makeLegend
タグのパラメータをリストしています。
表5-8 makeLegendタグのパラメータ
パラメータ名 | 説明 | 必須 |
---|---|---|
|
生成された凡例画像のURLの参照に使用できるスクリプト変数の名前。(この属性にはリテラル値を使用する。JSP式の値は使用できない。) |
はい |
|
凡例リクエストで指定されたスタイルに関する情報の取得元であるMapViewerデータソースの名前。 |
いいえ |
|
サーバー上で作成される凡例画像の形式。指定する場合は、 |
いいえ |
次の例では、id
がmyLegend
である単一列凡例を作成し、凡例画像を表示します。
<mv:makeLegend id="myLegend"> <legend bgstyle="fill:#ffffff;stroke:#ff0000" profile="MEDIUM"> <column> <entry text="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 density:"/> <entry style="V.COUNTY_POP_DENSITY" tab="1"/> </column> </legend> </mv:makeLegend> <P> Here is the map legend: <IMG SRC="<%=myLegend%>"> </P>
run
タグは、現行マップ・リクエストを、処理のためMapViewerサービスに発行します。ズームインとズームアウト、マップの中心の再設定またはこれらの操作の組合せを実行できます。
run
タグは、JSPページに一切出力しません。run
タグの結果としてMapViewerにより生成されたマップ画像を表示するには、getMapURLタグを使用する必要があります。
表5-9では、run
タグのパラメータをリストしています。
表5-9 runタグのパラメータ
パラメータ名 | 説明 | 必須 |
---|---|---|
|
必要なマップ・ナビゲーション・アクションを示す、
アクションを指定しない場合、マップ・リクエストは処理のため発行されるが、ズームや中心の再設定は行われない。 |
いいえ |
|
マップの中心の再設定において、ポイントのX縦座標値。 |
いいえ |
|
マップの中心の再設定において、ポイントのY縦座標値。 |
いいえ |
|
結果の画像をトリミングするための矩形領域の右上角のX縦座標値。 |
いいえ |
|
結果の画像をトリミングするための矩形領域の右上角のY縦座標値。 |
いいえ |
|
ズーム係数: 現行マップ・サイズの乗算( |
いいえ |
次の例では、マップ表示のズームイン(デフォルトのズーム係数2を使用)、およびデバイス領域の座標(100、250)におけるマップ表示の中心再設定をリクエストします。
<mv:run action="zoomin" x="100" y="250"/>
setParam
タグは、現行マップ・リクエストに対して1つ以上のパラメータを指定します。1つのsetParam
タグによって必要なパラメータをすべて一度に設定したり、複数のsetParam
タグによって様々なパラメータを異なるタイミングで設定したりできます。大部分のパラメータは、名前および機能が<map_request>
ルート要素の属性と同じです(3.2.1.1項を参照)。パラメータ名は大/小文字が区別されます。
表5-10では、setParam
タグのパラメータをリストしています。
表5-10 setParamタグのパラメータ
パラメータ名 | 説明 | 必須 |
---|---|---|
この属性の値が |
いいえ |
|
MapViewerによってレンダリングされる事前定義済テーマが含まれるベース・マップ。ベース・マップの定義は、ユーザーのUSER_SDO_MAPSビューに格納される(2.9.1項を参照)。独自のテーマおよびジオメトリ地物を表示するバックグラウンド・マップが常に必要な場合、このパラメータを使用。 |
いいえ |
|
結果のマップ画像のバックグラウンド・カラー。デフォルトは水色(RGB値はA6CAF0)。これは16進数で指定する。 |
いいえ |
|
結果のマップ画像のバックグラウンド・イメージ(GIFまたはJPEG形式のみ)。画像はマップ・リクエスト処理中の実行時に取得され、その他のマップ地物より前にレンダリングされますが、 |
いいえ |
|
データ座標領域内のマップ中心のX縦座標。 |
いいえ |
|
データ座標領域内のマップ中心のY縦座標。 |
いいえ |
|
結果のマップ画像の高さ(デバイス単位)。 |
いいえ |
|
この属性の値が |
いいえ |
|
|
データ座標領域内のマップの垂直範囲。 |
いいえ |
結果のマップ画像の上部に表示されるマップ・タイトル。 |
いいえ |
|
結果のマップ画像の幅(デバイス単位)。 |
いいえ |
次の例では、2つのsetParam
タグを使用しています。1つ目のsetParam
タグは、マップのバックグラウンド・カラー、幅、高さおよびタイトルを設定します。2つ目のsetParam
タグは、マップの中心点および垂直範囲を設定します。
<mv:setParam bgcolor="#ff0000" width="800" height="600" title="My Map!"/> <mv:setParam centerX="-122.35" centerY="37.85" size="1.5"/>
この項では、MapViewerのいくつかの操作を実行するJSPコードの使用例を紹介します。
例5-1では、MapViewer Beanの初期化、マップ・リクエスト・パラメータの設定、リクエストの発行および結果のマップ画像の表示を行います。さらに、関連するMapViewer Beanを取得し、これをスクリプト変数(myHandle
)に挿入し、文の中で直接アクセスされるようにします。
Displaying map: <B> <%=myHandle.getMapTitle()%> </B>
例5-1 JSPタグを使用したMapViewerの操作
<%@ page contentType="text/html" %> <%@ page session="true" %> <%@ page import="oracle.lbs.mapclient.MapViewer" %> <%@ taglib uri="http://xmlns.oracle.com/spatial/mvtaglib" prefix="mv" %> <HTML> <BODY> Initializing client MapViewer bean. Save the bean in the session using key "mvHandle"....<P> <mv:init url="http://my_corp.com:8888/mapviewer/omserver" datasource="mvdemo" id="mvHandle"/> Setting MapViewer parameters...<P> <mv:setParam title="Hello World!" bgcolor="#ffffff" width="500" height="375" antialiasing="true"/> Adding themes from a base map...<P> <mv:importBaseMap name="density_map"/> Setting initial map center and size...<P> <mv:setParam centerX="-122.0" centerY="37.8" size="1.5"/> Issuing a map request... <P> <mv:run/> <% // Place the MapViewer bean in a Java variable. MapViewer myHandle = (MapViewer) session.getAttribute("mvHandle"); %> Displaying map: <B> <%=myHandle.getMapTitle()%> </B> <IMG SRC="<mv:getMapURL/>" ALIGN="top"/> </BODY> </HTML>