ヘッダーをスキップ
Oracle Application Server Wireless開発者ガイド
10gリリース2(10.1.2)
B15742-02
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

15 ロケーション・サービスの使用

この章では、ロケーション・ベースのアプリケーションの開発者を対象として、概念と使用方法について説明します。項ごとに様々なトピックを記載しています。

15.1 ロケーション・サービスの概要

ロケーション・ベースのアプリケーションの開発者には、次の特殊サービスが必要です。

複数の会社が、この種の特殊なコンテンツおよびアプリケーションを提供しています。たとえば、ビジネス・ディレクトリ用のカテゴリが用意されているWebサイトや、運転方向を提供しているサイトがあります。OracleAS Wirelessフレームワークに基づいてアプリケーションを作成する開発者にとっては、特殊なコンテンツとサービスを使用できることによる利点があります。アクセス先として必要なすべてのサービスへのカスタム・インタフェースを、アプリケーションごとに作成するのは非効率的です。

OracleAS Wirelessのロケーション・アプリケーション・コンポーネントは、ジオコーディングの実行、運転方向の提供およびビジネス・ディレクトリの検索に使用するAPI(Application Programming Interface)のセットです。既存の重要なプロバイダをAPIにマップするサービス・プロキシが組み込まれており、将来は追加のプロバイダにも対応する予定です。

OracleAS Wirelessアプリケーションの開発者は、アプリケーションを変更することなく、汎用インタフェースを使用して様々なサービス・プロバイダにアクセスできます。また、インフラストラクチャを使用し、品質、可用性またはコストなどの基準に基づいてサービスの優先順位を設定できます。サービス・プロバイダにとっても、すべてのOracleAS Wirelessアプリケーション開発者がコンテンツと特殊機能をそのまま使用できることによる利点があります。

この項では、ロケーション・アプリケーション・コンポーネントAPIの概要、Javadocで生成された詳細なドキュメントとオンライン例の検索方法、各コンポーネントを使用する上で前提となる概念と使用方法について説明します。項ごとに様々なトピックを記載しています。


注意:

詳細、例およびその他のリソースについては、http://www.oracle.com/technology/products/iaswe/lbs/index.htmlを参照してください。

15.1.1 スタート・ガイド

OracleAS Wirelessのロケーション・アプリケーション・コンポーネントの使用を開始する手順は、次のとおりです。

  1. サンプル・プログラムを使用したりアプリケーションを作成する前に、この項の概念および使用方法の説明を読みます。

  2. sampleディレクトリに移動します。このディレクトリにサンプル・ファイルが格納されています。このディレクトリにあるReadme.txtファイルを読み、提供されるファイルを調べて、ニーズを満たしているファイルを使用してください。

  3. Javadocドキュメントを表示し、パッケージとクラスの詳細な参照情報を調べます。Javadocドキュメントを表示するには、Webブラウザで次のファイルを開きます。

    iAS-Wireless-Home/wireless/doc/index.html
    
    

    iAS-Wireless-Homeは、OracleAS Wirelessのホーム・ディレクトリです。

15.1.2 ロケーション関連情報でのシステム・マネージャのインタフェースの使用

Enterprise Manager内でOracleAS Wirelessシステム・マネージャ(システム・マネージャと呼ばれます)のインタフェースを使用すると、構成操作の実行、およびロケーション・アプリケーション・コンポーネントに関連する情報の検索ができます。

  1. Wirelessサーバーの「システム」タブのページで、「サイト管理」をクリックします。

  2. 「コンポーネント構成」をクリックして展開します。

図15-1に、「コンポーネント構成」セクションを展開した状態のシステム・マネージャのページを示します。

図15-1 Wirelessシステム・マネージャの「コンポーネント構成」セクション

図15-1の説明は次のとおりです
図15-1「Wirelessシステム・マネージャの「コンポーネント構成」セクション」の説明

図15-1のように、「コンポーネント構成」セクションの「関連ロケーション」セクションには、次のリンクが含まれています。

  • 「ロケーション管理」は、モバイル・ポジショニング構成、モバイル・ポジショニング・プロバイダの情報と構成、およびモバイルIDを提供します。

  • 「ロケーション・サービス」は、ジオコーディング、ルーティング、マッピング、トラフィックおよびビジネス・ディレクトリ・サービスに関連する構成オプションを提供します。

  • 「ロケーション・イベント・サーバー」は、ロケーション・イベント・サーバー(15.4項を参照)に関連するオプションを提供します。

  • 「ロケーション・マーク・アドレス書式」では、ロケーション・マーク・アドレスのフィールドを指定します。

15.1.3 ロケーション・サービスのアーキテクチャ

ロケーション・サービスは、図15-2に示すアーキテクチャに基づいています。

図15-2 ロケーション・サービスのアーキテクチャ

図15-2の説明は次のとおりです
図15-2「ロケーション・サービスのアーキテクチャ」の説明

図15-2では、次の事項を表しています。

  • アラート・エンジンおよびロケーション・ベースのアプリケーションは、(太線で囲まれた)アーキテクチャの外側にありますが、アーキテクチャと通信します。

  • このアーキテクチャでは、Java、XMLおよびJSPタグを使用するリクエストの処理が可能です。

  • 処理は、特定のアクティビティや各種のサービス(ビジネス・ディレクトリ、ジオコーディング、ルーティング、マップのサポート、リージョンのサポート、ポジショニング、ロケーションの問合せ、ロケーション・キャッシュおよびプライバシ管理)を処理するコンポーネントによって行われます。

  • プロバイダ接続フレームワークは、データやサービスのローカル・ソースおよび外部ソースと通信し、使用可能な様々なプロバイダのコンポーネント(ビジネス・ディレクトリ、ルーティング、マッピング、モバイル・ポジショニングなど)を備えています。

15.1.4 ロケーション・サービスのカテゴリ

ロケーション・サービスは、ジオコーディング、マッピング、ルーティング、ビジネス・ディレクトリ(イエロー・ページ)およびトラフィックという主要カテゴリで提供されます。

他の項では、ロケーション・サービスの外部プロバイダを指定して構成する方法と、各種サービスの詳細について説明します。

前述のサービスは、すべてSpatialManager Javaクラスで管理されます。SpatialManager Javaクラスの定義は、次のとおりです。

package oracle.panama.spatial;
import ...;
public class SpatialManager
{
  public static synchronized Geocoder  getGeocoder() {...}
  public static synchronized Router  getRouter() {...}
  public static synchronized YPFinder  getYPFinder() {...}
  public static synchronized Mapper getMapper() {...}
  public static synchronized TrafficReporter getTrafficReporter() {...}
}

15.1.5 サービス・プロバイダ

通常、ロケーション・サービスのコアとなる実際の計算は、外部プロバイダ側で実行されます。外部プロバイダには、インターネットや他の通信手段を介してアクセスする場合と、ローカルの場合があります。OracleAS Wirelessのロケーション・アプリケーション・コンポーネントのAPIでは、統合されたフレームワークで通信と結果の適用が実行されるため、通常、ユーザーは特定のサービスがどのプロバイダから提供されているかを意識しません。また、このAPIにより、実装に伴うアプリケーション開発者の労力と特定のプロバイダへの依存性が最小限に抑えられます。

ほとんどのサービスについて、初期プロバイダ・セットへのアクセスが組み込まれています。プロバイダによって、詳細な構成情報を組み込んでいる場合と、そうでない場合があります。(構成情報のないプロバイダの場合、通常はそのユーザー名とパスワードの使用権を購入した後で、必要な情報を受け取ります。)

Enterprise Managerインタフェースを介してOracleAS Wirelessシステム・マネージャを使用することで、追加のプロバイダへのアクセスを提供できます。新規プロバイダを追加した場合や、そのプロバイダが使用するインタフェースが既存のプロバイダとは異なる場合は、新規プロバイダのフォーマットとワイヤレスのロケーション・アプリケーション・コンポーネントのAPIの間の変換を行うためのJavaクラスを作成する必要があります。(このプログラムをProviderImpl属性として指定します。)また、プログラムの実装用クラス・ファイルをクラス・パスに追加する必要があります。

1つのサービスに複数のプロバイダを使用すると、そのサービスの信頼性が向上します。APIが失敗するのは、すべてのプロバイダが障害を起こした場合、またはWebアクセスが一時的に使用できなくなった場合のみです。プロバイダは作業環境リストで指定するため、次のいずれかの状況が発生した場合など、優先プロバイダがリクエストされたサービスを実行できない場合は、APIが自動的にフェイルオーバーします。

  • プロバイダに一時的にWebを介してアクセスできなくなった場合。

  • リクエストしたとおりのサービスがプロバイダでサポートされていない場合。

  • リクエストが正しく指定されていない場合(存在しない住所など)。

15.1.5.1 プロバイダの選択

ロケーション・サービスは、プロバイダ・リストを使用して、プロバイダ間のフェイルオーバーをサポートします。プロバイダが試行される順序は、優先順位順にすると理想的です。優先順位には、単純なプロバイダのランキングを使用する方法と、リージョン、時間、パフォーマンス、信頼性およびコストを反映させる方法があります。どの基準を使用した場合も、プロバイダは、その優先順位を決定するプロバイダ選択フレームワークによって評価されます。

プロバイダ選択フレームワークを、この項の説明に従って構成する必要があります。サービス・リクエストをフレームワークが満たさない場合は、プロバイダ選択フレームワークの実装が適切に構成されていないか、すべてのプロバイダが障害を起こしています。問題や障害に関する情報は、コンソールのログまたはログ・ファイルから確認できます。詳細は、15.1.5.2項を参照してください。

使用するプロバイダ選択フレームワークを選択する必要があります。フレームワークを選択するには、OracleAS Wirelessシステム・マネージャを使用して次の手順で操作します。

  1. Wirelessサーバーの「システム」タブのページで、「サイト管理」をクリックします。

  2. 「コンポーネント構成」をクリックして展開します。

  3. 「構成」サブセクションで「ロケーション・サービス」をクリックします。図15-3のように「ロケーション・サービス」ページが表示されます。

図15-3「ロケーション・サービス」ページ

図15-3の説明は次のとおりです
図15-3「「ロケーション・サービス」ページ」の説明

「基本構成」の下の「プロバイダ・セレクタ・クラス名」にプロバイダ選択フレームワークの実装を入力します。選択したプロバイダ選択フレームワークの実装により、プロバイダ選択に使用できる規則の複雑度が決定されます。次の実装を使用できます。

  • oracle.panama.spatial.core.ruleengine.SimpleRuleEngineImpl

    この単純な実装は、いずれかで成功するまですべてのプロバイダを試行します。プロバイダの試行順序は、プロバイダ構成リストで指定されます。

    ただし、この実装は、プロバイダがカバーしていないリージョンに関する問合せを発行する場合があるため、他の実装よりも時間がかかる可能性があります。また、プロバイダによっては、リクエストされたリージョンをカバーしていない場合、失敗するかわりに最善の努力を試みるため、この実装は不適当な選択になる可能性があります。たとえば、ヨーロッパのみをカバーするプロバイダが、サンフランシスコからボストンにルーティングするリクエストを受信するとします。このプロバイダは最善の努力を試み、ボストンとサンフランシスコのそれぞれに最も近いヨーロッパの場所を代用します。

  • oracle.panama.spatial.core.ruleengine.RuleEngineImpl

    この実装では、特定の国で十分な有効範囲を提供しているかどうかに基づいて、プロバイダを選択できます。この基準を満たしているすべてのプロバイダが、プロバイダ構成リストに指定されている順序で試行されます。

    この実装を使用すると、ある国で有効範囲を提供していないプロバイダや、基準を満たすサービスを提供していないプロバイダ(たとえば、コストが高すぎたりサービス品質が不十分な場合など)を試行して、時間を無駄にすることがありません。ただし、この選択フレームワークでは、必要な構成内容が多くなります。たとえば、国と国エイリアスのリストを、プロバイダごとに指定する必要があります(ただし、このような構成例も用意されています)。

  • oracle.panama.spatial.core.ruleengine.ExtendedRuleEngineImpl

    この実装は、プロバイダのプロパティの変更にあわせて自動的に調整されます。この実装は、各プロバイダのパフォーマンスおよび信頼性を動的に測定します。これらの統計に基づいて、プロバイダ・リストが動的にランキングしなおされます。

    この実装は、現在、最速かつ最も信頼性の高いプロバイダを自動的に優先します。また、負荷が大きくなって速度が低下し、他のプロバイダと同程度になるまでは、ほぼ常に最速かつ最も信頼性の高いサービスが使用されるという点で、ロード・バランシングにも使用できます。特定の時点から、他のプロバイダは以前よりも多くのリクエストを受けることになります。

15.1.5.1.1 プロバイダ情報の構成

プロバイダ情報を構成するには、「ロケーション・サービス」ページの「ロケーション・サービス構成」の下で(15.1.5.1項図15-3を参照)、構成対象のサービスのタイプを選択します。

  • 「ジオコーディング構成」

  • 「ルーティング構成」

  • 「マッパー・プロバイダ構成」

  • 「トラフィック構成」

  • 「YPプロバイダ構成」

プロバイダ情報(15.1.5.1.2項「プロバイダの構成」を参照)は、どのタイプのサービス(ジオコーディング、マッピング、ルーティング、トラフィックおよびYP)の場合もほぼ同じです。

ジオコーディングとその他のサービスの場合、国名と国エイリアス(15.1.5.1.3項「国エイリアスの構成」を参照)と住所書式(15.1.5.1.4項「住所書式(国際)の構成」を参照)の構成情報の指定が必要になる場合があります。

管理者が、(OracleAS Wirelessシステム・マネージャを使用して)Webサービス・プロキシを含むようにプロバイダ・リストを構成している場合は、すべてのロケーション・サービス・リクエストが自動的(かつ透過的)にWebサービスを使用します。Webサービスの使用方法の詳細は、15.2.3項「Webサービスの使用」を参照してください。


注意:

YPカテゴリの情報を除き、すべてのロケーション・サービス構成情報は、XML構成ファイルsite_cfg_bootstrap.xml内で(Wirelessにより)内部的にメンテナンスされます。ただし、このファイルは直接変更しないでください。構成情報の変更にはOracleAS Wirelessシステム・マネージャのインタフェースを使用します。

15.1.5.1.2 プロバイダの構成

次のパラメータを使用して、プロバイダの順序付きリストを構成します。

  • プロバイダ名: IDとして機能するプロバイダ名

  • プロバイダ実装クラス名: このプロバイダのプロキシを実装するクラス(変換およびプロバイダとの通信用)

  • URL: プロバイダへのアクセスに使用する静的URL接頭辞

  • ユーザー名: プロバイダによって決定されるユーザー名

  • パスワード: ユーザー名と組み合せて使用されるパスワード

  • パラメータ: プロバイダのプロキシのカスタマイズと構成に必要なパラメータ

  • ISOロケール: 国IDがセミコロンで区切られたリスト(国エイリアス・リストで指定、15.1.5.1.3項を参照)

  • 勤務先URL: プロバイダのコーポレートURL(広告として使用)

  • サービス・バージョン: このプロキシで使用するプロバイダのサービス・バージョン

  • 勤務先ロゴURL: プロバイダのコーポレート・ロゴのURL(広告として使用)

15.1.5.1.3 国エイリアスの構成

国エイリアスの構成は国名に関連しており、特定の国を表す1つの標準識別子のシノニムです。この標準識別子には、ISO名(アメリカはUS、ドイツはDEなど)を使用する必要がありますが、他の識別子を指定できます。

エイリアスは、oracle.panama.spatial.core.ruleengine.RuleEngineImplプロバイダ選択フレームワークの実装と組み合せて使用されます。各プロバイダを、IDで指定した国のセット用に構成します。たとえば、アメリカの住所をジオコーディングするなどのサービス・リクエストが送信されると、標準IDであるUSを検索するために国エイリアス表が参照されます。その後は、有効範囲となっている国のリストのうち、USのプロバイダのみが試行されます。

一部の国IDの既存のエイリアスとして構成されていない国名を使用する場合は、かわりにID「不明」を使用します。この場合は、有効範囲となっている国のリストのうち、「不明」のプロバイダが試行されます。

単純なプロバイダ選択フレームワークの実装(oracle.panama.spatial.core.ruleengine.SimpleRuleEngineImpl)を使用する場合、国エイリアスはプロバイダ選択には不要です。

15.1.5.1.4 住所書式(国際)の構成

住所書式の構成を使用して、国際住所書式を指定します。APIのoracle.panama.spatial.intladdressパッケージでは、このリストを使用して住所に含まれる構成要素(US、フランス、ドイツ、中国など)と入出力での表示方法が決定されます。

国際住所フレームワークを構成するには、OracleAS Wirelessシステム・マネージャを介してアクセス可能なリポジトリ内の住所書式リストを使用します。この構成では、住所のすべての構成要素、構成要素のエイリアス、都市、州および番地などの標準的な概念へのマッピングを指定します。次のことを決定するために、テキスト表現の書式も構成します。

  • 住所を複数行に分割する場合の通常の方法

  • 各構成要素の順序

  • オプションの構成要素と必須の構成要素

このアプローチでは、ユーザーが国固有の書式で住所を表示し、入力するには、その書式を指定する必要があります。指定しないと、システムではユーザーに対して国の前に州と郡のどちらを指定するように求めればよいかがわかりません。

このアプローチの利点は、次のとおりです。

  • ユーザーには、郵送に必要な住所書式と一致するフォームが表示されます。

  • 各構成要素が単に1〜3行目のどこかに含まれているのではなく、個別に認識され、意味のある方法で識別されている場合、システムでは住所の分析が容易になります。

  • 住所の入力と出力の両方について、ローカルの住所書式に自動的に適応する場合、アプリケーションでの検索はより高度になります。

  • アメリカ以外のカスタマの場合、アメリカでの書式とは異なり、ローカルの住所書式で表される方が理解しやすくなります。

  • アプリケーションを様々な国にあわせてリライトする必要はありません。すべてはフレームワークにより自動的に処理されます。

複数の国際住所書式が用意されています。2つの例を次に示します。

アメリカの場合

{name}
{house number/house} {street}[ Apt {apt}]
{city} {state} {postal code}[-{postal code ext}]
{country}

ドイツの場合

{Name/name}
{Strasse/street/first line} {Hausnummer/house}[ Wohnung {Wohnung/apt}]
{PLZ/postal code} {Stadt/city}
 [{Bundesland/state}]
{Land/country}

構文上の注意:

  • { }(中カッコ)は住所の構成要素を囲みます。

  • /(スラッシュ)は、構成要素内の代替エイリアスを区切ります。

  • [ ](大カッコ)はオプションの要素を囲みます。

  • 大カッコ以外のカッコの外側にある構成要素は、引用符を使用して住所から区切ります(123 Main Street Apt 4に含まれているAptなど)。

国際住所書式に関連するプログラミング情報と例は、15.2.2.1.1項「国際住所」を参照してください。

15.1.5.2 プロバイダ選択情報のロギング

プロバイダ選択フレームワークの実装では、OracleAS Wirelessのログ・ファイル(sys_panama.logなど)に、プロバイダの選択とその成否が記録されます。たとえば、次のイベントを調べることができます。

  • ジオコーディング、マッピングなど(他のタイプのサービス)のマルチプレクサが初期化されていること。

  • プロバイダ選択フレームワークの実装が初期化されていること。

  • ジオコーディング、マッピングなど(他のタイプのサービス)のプロキシが初期化されていること。

  • 特定のプロバイダが試行されたこと。

  • 特定のプロバイダが失敗したこと。

  • 特定のプロバイダが成功したこと。

  • すべてのプロバイダが失敗したこと。

15.1.5.3 プロバイダ・パフォーマンス情報のロギング

プロバイダ選択フレームワークの実装では、プロバイダのパフォーマンスの統計が記録されます。プロバイダへのリクエストごとに、プロバイダの成功または失敗に関係なく、次の情報が記録されます。

  • プロバイダ名

  • プロバイダ・プロキシのJavaクラス

  • 所要時間(ミリ秒単位)

  • 成功(trueまたはfalse)

  • リクエストの発行時刻(タイムスタンプ)

パフォーマンス情報は、表PTG_LBS_LOGに書き込まれます。Wirelessシステム・マネージャを使用してこの情報を確認する手順は、次のとおりです。

  1. Wirelessサーバーの「システム」タブのページで、「サイト・パフォーマンス」をクリックします。

  2. 「コンポーネント・パフォーマンス」セクションで、「関連ロケーション」をクリックします。

15.1.6 ジオコーディング・サービス

ジオコーディングAPIは、特定の住所の地理的位置を提供します。Wirelessのユーザーの場合、住所はロケーションを指定する最も一般的な方法です。ただし、付近のレストランの位置を検索したり、運転方向を提供する場合、住所のテキスト表現は、最初にジオコーディングする、つまり地理的座標に変換しなければ役に立たないことがあります。

ジオコーディングする住所には、標準的な郵便に似たテキスト表現があります。戻される結果は、住所に対応する経度と緯度です。たとえば、ジオコーディングへの入力に次の情報が含まれているとします。

  • firmName: "oracle"

  • firstLine: "1 Oracle Drive"

  • secondLine: ""

  • lastLine: "Nashua NH 03062"

  • matchMode: "tight"

この例では、結果はPoint( x = -71.455, y = 42.7117)となります。

ユーザーは曖昧な住所を指定する可能性があるため、GeocodeResultには単一のオブジェクトではなくLocationオブジェクトの配列が含まれています。

15.1.6.1 ジオコーディングAPI

この項では、ロケーション・アプリケーション・コンポーネント用のジオコーディングAPIについて説明します。

次の2つクラスPointおよびLocationはこのAPI全体で使用され、ジオコーディング固有ではありません。ただし、ここで説明するのは、この2つのクラスが入力と出力の両面でジオコーディング・サービスの中心となるコンポーネントを表しているためです。

15.1.6.1.1 Pointクラス

Pointクラスでは、経度と緯度の座標点が定義されます。地図上の地点を表すために、ラベルと半径を表す追加の値を使用できます。ラベルと半径は、地図に表示される他の機能には使用されません。

15.1.6.1.2 Locationクラス

Locationクラスでは、住所、経度および緯度を使用してロケーションが定義されます。ロケーション・オブジェクトがfirstLinesecondLineおよびlastLineを使用して構成されている場合、一部の外部プロバイダでは都市や州が正しく識別されない可能性があります。これは、lastLineには国固有の比較的柔軟な書式で都市、州および郵便番号を使用できるためです。

特定の部分文字列を、都市を表す構成要素として識別できない場合、都市は「不明」になります。この場合、API自体で複雑な分析を試行するかわりに、このタスクをエキスパート、つまり外部のジオコード・プロバイダに委ねます。

15.1.6.2 Geocoderインタフェース

Geocoderインタフェースは、アプリケーション・プログラマがジオコーディング・サービスにアクセスする方法を定義します。このインタフェースを実装するクラスのオブジェクトは、SpatialManagerによって戻されます。

15.1.7 ロケーション・マーク

電話など、ある種のモバイル・デバイスは物理的な制約から、長い英数字文字列を入力したり表示するのは困難です。ロケーション・マークにより、簡潔でわかりやすい名前で識別される1つの空間情報が格納されます。たとえば、「My home」がロケーション・マーク名で、内部的な空間情報が「123 Main Street, Somewhere City, CA, 12345; Lon = -122.42, Lat = 37.58」となる場合があります。

ロケーション・マークを使用すると、ユーザーはモバイル・デバイスに文字列を入力する手間を省くことができます。各自のロケーション・マークをデスクトップ上で管理し、その名前をモバイル・デバイスから参照してロケーションにアクセスできます。通常、今日のロケーション認識アプリケーションでは、地点(住所や交差点など)のみが使用されています。この場合は、ジオコーディングにより空間情報を提供できます。ただし、ロケーション・マークは、1つのポイントを中心とする円状の地域(つまり、ポイントと半径を指定する場合)、またはリージョン・モデル・ツール(15.5項を参照)で定義されたリージョンの場合もあります。

また、ロケーション・マークを使用すると、ユーザーはwhat-ifシナリオを試行して、アプリケーションをデフォルト・ロケーションや現在のロケーションとは異なるロケーションにあるかのように動作させることができます。たとえば、エンタテインメント・サービス・アプリケーションのユーザーが実際にはボストンにいて、数日後にサンフランシスコに旅行するとします。このユーザーがデフォルトとしてSan Franciscoにロケーション・マークを設定すると、San Franciscoリージョンに関連する情報とともに表示されます。

各ユーザーはパーソナライズされたロケーション・マークを使用できます。これらはWirelessリポジトリに格納されます。

デフォルト・ロケーション・マークは、ユーザーごとに設定できます。あるユーザーにモバイル・ポジショニング情報がない場合は、そのユーザーのデフォルト・ロケーション・マーク(定義済の場合)が使用されます。たとえば、ユーザーSmithのデフォルト・ロケーション・マークがユーザーのオフィスで、Smithの現在のポジショニング情報がない場合、現在のロケーションはSmithのオフィスとみなされます。

ロケーション・マークはLocationMarkクラスを使用して作成します。また、ユーザーがロケーション・マークを作成するには、カスタマイズ・ポータルにログインし、「ロケーション・マーク」タブをクリックして「作成」をクリックする方法もあります。

ロケーション・マークを使用してモバイル・ポジショニングを使用可能にする方法の詳細は、15.3.1項「手動ポジショニング」を参照してください。

15.1.8 LANDMARK表

Wirelessのリポジトリ・スキーマには、新しい表LANDMARKが追加されています。この表には、関連付けられているユーザーなど、各ロケーション・マークの詳細情報が含まれています。たとえば、複数のユーザーが、1つのロケーション・マークOfficeをそれぞれ異なるロケーションで使用している場合があります。

15.1.9 マッピング・サービス

マッピングAPIは、次のいずれかのマップ・イメージを作成する機能を提供します。

  • 単一の点(住所やロケーション・マークなど)

  • 複数の点(複数の住所やロケーション・マークなど)

  • ルート全体

  • 単一の運転経路

マッピングAPIを使用すると、地図のサイズ(解像度)とイメージ・フォーマットを指定できます。

マッピング機能は、純マッピング・アプリケーションとして、またはルーティング・アプリケーションの一部としてユーザーに表示できます。ルーティング・アプリケーションでは、ルートと運転経路のマッピングがルーティング・プロバイダにより実行されます。ルーティング・サービスの詳細は、15.1.10項「ルーティング・サービス」を参照してください。

15.1.10 ルーティング・サービス

ルーティングAPIは、始点、終点およびオプションの経由地リストに基づいて、ルーティング(運転方向)情報を提供します。すべての点は、緯度と経度のペアまたは住所として指定されます。

ルーティング結果は、経路セットで構成されます。経路は、「左折してI-93に」または「右手に向かってルート3に合流」などの運転指示に対応します。ルーティング結果には、走行合計時間の見積と距離も含まれています。オプションで、地図とルートの座標もリクエストできます。

15.1.10.1 ルーティング設定

ルーティングには、作業環境や要件などのルーティング・オプションを反映できます。これらのオプションはルーティング設定と呼ばれるセットにまとめられています。ルーティング・オプションには、基本オプションと2次オプションの2種類があります。

基本オプションには、次の項目が含まれます。

  • マップ(イメージ)をリクエストするかどうか。

  • ジオメトリ(ルートの座標)をリクエストするかどうか。

2次オプションには、次の項目が含まれます。

  • 最短距離や最短走行時間などの最適化方法

  • 有料道路の回避、フェリーの回避、高速道路の回避などのルート・プロパティ

  • マップ・サイズ

2次オプションは必須か任意かを指定できます。

  • 2次オプションが必須であってもプロバイダがサポートしていない場合、APIは自動的に次のプロバイダにフェイルオーバーします。

  • 2次オプションが任意であってプロバイダがサポートしていない場合、APIは別のプロバイダがそのオプションをサポートしているかどうかをチェックしません。

アプリケーション開発者が必須か任意かを指定せずに2次オプションをリクエストすると、次のデフォルト値が適用されます。

  • 最適化メソッド: 優先

  • フェリーの回避: 優先

  • 高速道路の回避: 優先

  • 有料道路の回避: 優先

  • 概観マップのサイズ: 必須

  • 経路マップのサイズ: 必須

  • 概略マップのスケールとズーム・レベル: 優先

  • 経路マップのスケールとズーム・レベル: 優先

15.1.10.2 ルーティング結果

アプリケーションでは、戻されたルートの次のコンポーネントを問合せできます。

  • 経路リスト

  • 全距離

  • 走行合計時間の見積り

  • 概観マップ

概観マップには、出発地と目的地が表示され、ルートがハイライトされます。

ルーティング結果の一部として経路(運転方向)セットが戻されます。各経路は運転指示に対応し、次の情報が含まれます。

  • テキストによる説明

  • この経路またはこの経路までの移動距離(これまでに何マイル移動したか)

  • 詳細な経路マップ

  • ジオメトリ(座標点、緯度および経度のリスト)

ルートまたは経路全体のマップを、Java ImageオブジェクトまたはURLを表す文字列としてリクエストできます。

15.1.10.3 複数言語のサポート

ルーティング・プロバイダが複数の言語をサポートしている場合、このAPIは、ルーターへのリクエストで指定されたJava localeオブジェクトに基づいて言語を選択します。言語設定によって、経路説明および距離の測定単位が異なる場合があります。

15.1.10.4 ルーティングAPI

この項では、ロケーション・アプリケーション・コンポーネント用のルーティングAPIについて説明します。

15.1.10.4.1 Routerインタフェース

Routerインタフェースは、アプリケーション・プログラマがルーティング・サービスにアクセスする方法を定義します。このインタフェースを実装するクラスのオブジェクトは、SpatialManagerによって戻されます。

15.1.10.4.2 RoutingSettingsクラス

RoutingSettingsクラスは、ルーティングに渡されるオプションのセットを定義します。ルーティング・オプションには、基本オプションと2次オプションの2種類があります。

基本オプションには、マップまたはジオメトリをリクエストするかどうかが含まれます。基本オプションは、RoutingSettingsオブジェクトのコンストラクタで指定できます。

2次オプションは、setSecondaryOptionを使用して設定できます。最初のパラメータはRoutingOptionオブジェクトで、RoutingOptionクラスで定義する静的定数です。このパラメータは、値が設定されているオプションを識別します。2番目のパラメータは、値を表す文字列です。

2次オプションが必須かどうかは、setSecondaryOptionRequiredで定義します。最初のパラメータはRoutingOptionで、2番目のパラメータによってオプション要件が必須かどうかが指定されます。このファンクションをコールしない場合は、デフォルト値が使用されます。

15.1.10.4.3 RoutingResultクラス

RoutingResultクラスは、ルーティング結果を定義します。詳細は、15.1.10.2項を参照してください。

15.1.10.4.4 Maneuverクラス

Maneuverクラスは、1つのルート内に1つの経路を定義します(経路属性については、15.1.10.2項「ルーティング結果」を参照)。

15.1.11 ビジネス・ディレクトリ(イエロー・ページ)サービス

ビジネス・ディレクトリ(イエロー・ページまたはYP)サービスは、特定の領域内で指定された名前またはカテゴリと一致するビジネスのリストを提供します。

既存のプロバイダは、YPサービスを異なるインタフェースで提供しています。特に、YPカテゴリと階層構造もすべて異なっています。カテゴリは、一覧表形式で編成されている場合と、カテゴリおよびサブカテゴリからなる階層形式で編成されている場合があります。階層ツリーは、分岐が多く深い場合や分岐が少なく浅い場合、またはバランスが取れている場合や取れていない場合があります。

異なるプロバイダのサービスを統一するために、Oracleビジネス・ディレクトリ・サービスでは、OracleAS Wireless開発者がXMLファイルに定義しているカスタム階層が使用されます。この階層内の各リーフには、1つ以上のプロバイダのカテゴリへの参照が設定されています。リーフでないノードにも、この参照を設定できます。このカスタム階層では、最初に優先カテゴリが定義されます。その後、OracleAS Wirelessを使用している電話会社は、これらのカテゴリと外部プロバイダがサポートしている類似のセマンティクスを持ったカテゴリとの一致を試みます。

外部プロバイダへの参照を持ちカスタマイズされた階層は、順序付けられた階層構造が格納されたXMLファイルで表されます。カテゴリ階層での表示順序には、様々なカテゴリの知名度を考慮できます。たとえば、画面サイズが限られているデバイスの場合、アプリケーションでは最も一般的なカテゴリの中で選択肢を制限できます。

15.1.11.1 イエロー・ページ・プロバイダ間で異なるアプローチ

複数のプロバイダがWeb上でYPサービスを提供していますが、各プロバイダのアプローチには大きな違いがあり、汎用インタフェースは提供されていません。また、それぞれのアプローチはプロバイダのメソドロジで確定されてはおらず、変更されることを予想できます。

各種アプローチの統一パターンは、ビジネスが件名別とロケーション別に分類されることです。ロケーション・コンポーネントは、郵便番号または都市と州の組合せを使用してロケーションを決定できるという点で十分に認識されています。

これに対して、ビジネス・カテゴリの実装方法は統一されていません。カテゴリの一覧表を提供し、ユーザーに単純な部分文字列の一致により選択させているプロバイダや、サブカテゴリを3または4レベルの階層に編成しているプロバイダがあり、後者の場合、分岐は20〜50、または100以上になることもあります。ユーザーは、階層のルート(デフォルト)から横断を開始できます。または、階層内の適切な開始ポイントと一致するキーワードを入力することもできます。このキーワードによる一致では、単純な部分文字列の検索よりも詳細で、より適切な選択結果が得られます。

15.1.11.2 ビジネス・ディレクトリのカテゴリ構成

ビジネス・カテゴリとカテゴリ階層のサポートは、XML構成ファイルを介して提供されます。(ビジネス・ディレクトリ・プロバイダ情報の表示と変更には、OracleAS Wirelessシステム・マネージャを使用する必要がありますが、ビジネス・ディレクトリ・カテゴリ情報の表示と変更にはXMLファイルを使用してください。)

例15-1のカテゴリ階層定義ファイルは、ビジネス・ディレクトリ・カテゴリのカスタム階層を表しています。各カテゴリには、必要な数のサブカテゴリを含めることができます。ネスト・レベルの制限はありません。1つのカテゴリを複数のビジネス・ディレクトリ・コンテンツ・プロバイダにリンクできます。このファイルで得られる柔軟性により、15.1.11.1項で説明したように、各種のビジネス・ディレクトリ・サービス・プロバイダの様々なアプローチに対処できます。

例15-1 ビジネス・ディレクトリのカテゴリ階層定義ファイル

<?xml version="1.0" standalone="yes"?>
<Categories>
  ...
  <Category
    CategoryName  = "Berry crops">
    <Provider
      Name  = "..."
      Parameter  = "..."/>
      <Category
      CategoryName  = "Cranberry farm">
      <Provider
        Name  = "..."
        Parameter  = "..."/>
    </Category>
  </Category>
  ...
  <Category
    CategoryName  = "Ornamental nursery products">
    <Provider
      Name  = "..."
      Parameter  = "..."/>
    <Category
      CategoryName  = "Florists' greens and flowers">
      <Provider
        Name  = "..."
        Parameter  = "..."/>
    </Category>
      <Category
      CategoryName  = "Bulbs and seeds">
      <Provider
        Name  = "..."
        Parameter  = "..."/>
    </Category>
  </Category>
  <Category
    CategoryName  = "Crops grown under cover">
    <Provider
      Name  = "..."
      Parameter  = "..."/>
    <Category
      CategoryName  = "Mushrooms grown under cover">
      <Provider
        Name  = "..."
        Parameter  = "..."/>
    </Category>
  </Category>
  ...
</Categories>

15.1.11.3 ビジネス・ディレクトリ(イエロー・ページ)API

アプリケーション開発者は、YPFinderインタフェース内のファンクションを使用してカテゴリ階層を横断できます。結果となるカテゴリには、次のリストをリクエストできます。

  • ビジネスのリスト

  • 直接のサブカテゴリのリスト

  • 部分文字列を含む直接または間接的なサブカテゴリのリスト

15.1.11.3.1 YPFinderインタフェース

YPFinderインタフェースは、アプリケーション・プログラマがYPサービスにアクセスする方法を定義します。このインタフェースを実装するクラスのオブジェクトは、SpatialManagerによって戻されます。

このクラスのオブジェクトにより、ユーザーは次のビジネスを問合せできます。

  • 特定の州内のビジネス

  • 特定の都市内のビジネス

  • 特定の郵便番号に該当するビジネス

  • 特定の半径に含まれるビジネス

  • 特定の半径内で最も近接しているn件のビジネス

これらのリージョン・タイプごとに、次の条件でビジネスを検索できます。

  • 指定したビジネス名またはキーワードと一致

  • 指定したカテゴリと一致

  • 指定したビジネス名またはキーワードおよび指定したカテゴリの両方と一致

  • ビジネス名またはカテゴリに含まれるキーワードと一致

15.1.11.3.2 YPCategoryクラス

YPCategoryクラスは、階層の一部である単一のカテゴリを定義します。このクラスでは、ユーザーはそのカテゴリ内のビジネスにアクセスできます。また、カテゴリ内で特に次のサブカテゴリを検索できます。

  • 直接のすべてのサブカテゴリ

  • キーワードと一致する直接または間接的なすべてのサブカテゴリ

  • 指定した名前を持つサブカテゴリ

最もポピュラーなアプリケーションの1つは、指定したキーワードと一致するルートのサブカテゴリを検索することです。

15.1.11.3.3 YPBusinessクラス

YPBusinessクラスは、単一のビジネスを定義します。このクラスは住所(Locationインタフェース)を表し、電話番号、説明および一致するカテゴリのリストも含まれます。これらのビジネスごとに、あるカテゴリのすべてのビジネス、またはすべてのカテゴリを取得できます。たとえば、特定の書店が書店とカフェという2つのカテゴリに含まれている場合があります。

15.1.12 トラフィック・サービス

トラフィックAPIは、主要都市の道路網の交通量に影響のある条件の情報を提供します。通常、このようなエリアはさらに中心市街、西地区、東地区などの小さいエリアに分割されています。リアルタイムのトラフィック・レポートでは、条件が短期間(5分ごとなど)で更新されるため、営業車両の管理や個人の移動にとって重要な情報を提供します。

トラフィック・レポートの主要なコンポーネントは事象です。事象は、交通量に影響すると思われるイベントです。事象の例には、事故、建設作業および交通渋滞(通常または予想外)などがあります。事象ごとに、事象のタイプ、発生場所(ルート番号、ロケーションまたはリージョンなど)、ルート沿いの方向(北部方面など)、予想される遅延および交通渋滞の長さなどの情報が含まれます。

現行のリリースでは、事象ベースのトラフィック情報について次の問合せがサポートされています。

  • 都市レベルの問合せ: 都市全体のトラフィックに関連する事象を戻します。

  • ルート・レベルの問合せ: 都市内の指定したルートでのトラフィックに関連する事象を戻します。

  • 緯度と経度(ポイント)または住所と半径レベルの問合せ: リクエストした半径内でのトラフィックに関連する事象を戻します。

トラフィック問合せの例では、次のようなトラフィック・レポートが戻されます。

  • 都市(Bostonなど)

  • 都市のルート(BostonのI-93 Southなど)

  • (ルート、都市)のコレクションとして戻される予定ルート(Nashua、NHからBoston、MAなど)

  • ロケーション(緯度、経度)とロケーションからの半径で構成される移動範囲

  • 特定の住所の近接度(One Oracle Drive、Nashua、NH 03062など)

トラフィックAPIは、リクエストを処理してレスポンスを戻します。リクエストとレスポンスには、JavaフォーマットまたはXMLフォーマットを使用できます。XMLフォーマットによるXMLリクエストとレスポンスの例は、15.1.12.2項を参照してください。トラフィックJava APIの説明は、15.1.12.3項を参照してください。


注意:

現行のリリースのサンプル構成ファイルには、トラフィック・サービス・プロバイダは含まれていません。

15.1.12.1 トラフィック・レポートのキャッシュ

トラフィック・レポート情報は、都市レベルでキャッシュされます。初めてフェッチされた都市のトラフィック・レポートは、トラフィック・レポート・キャッシュに書き込まれます。キャッシュされたレポートは、最大キャッシュ経過期間(15分など)の後は無効とみなされます。この期間はシステム・マネージャを使用して設定できます。

都市に関してキャッシュされたトラフィック・レポートを更新するには、ネットワーク上でトラフィック・サービス・プロバイダにラウンドトリップする操作が必要です。キャッシュされたレポートは、次の両方の条件と一致する場合にのみ更新されます。

  • 特定の都市、またはその都市に全体または一部が含まれている空間ジオメトリ(ルートまたはポイントと半径)の問合せが行われた(つまり、問合せ対象のジオメトリと都市のジオメトリに空間的な相互作用がある)場合。

  • 都市に関してキャッシュされたレポートが、最大キャッシュ経過期間を超えている場合。

15.1.12.2 トラフィックに関するXMLリクエストとレスポンス

例15-2に、ボストンのトラフィック情報に関する都市レベルのリクエストをXMLフォーマットで示します。

例15-2 ボストンのトラフィックのリクエスト

<?xml version="1.0" encoding="UTF-8"?>
<traffic_request>
  <query_list>
    <query_info
query_type="city_level_query"
city_name="boston"
state_name="MA"
country_name="US"
    />
  </query_list>
</traffic_request>

例15-3に、ボストンのトラフィック情報に関するXMLフォーマットのレスポンスを示します。

例15-3 ボストンのトラフィックのレスポンス

<?xml version="1.0"  encoding="UTF-8"?>
<traffic_response>
 <report_list>
  <traffic_report>
    <provider
    name="Trafficstation"
    covered_city_name="Boston"
    state_name="MA"
    country_name="US"/>
    <report_time month="6" day="19" year="2001" hour="5" minute="28" meridian =
      "PM"/>
      <unit distance_unit="MILES" time_unit="MINUTE"/>
    <incident_list>
      <incident id = "1">
        <incident_type>ACCIDENT</incident_type>
        <description>CAR ACCIDENT</description>
        <route type = "Interstate" name = "I-93" direction = "SOUTH"/>
        <geo_location  longitude = "-71.0607" latitude  = "42.3659" radius =
           "5.0"/>
        <location_range>
          <at_location>EXIT 26</from_location>
        </location_range>
        <time_range>
          <from_time  month = "6" day = "19" year = "2001" hour = "5" minute =
             "28" meridian = "PM"/>
          <to_time  month = "6" day = "19" year = "2001" hour = "5" minute =
             "28" meridian = "PM"/>
         </time_range>
        <severity>HEAVY</severity>
        <speed>15.0</speed>
        <impact>EXPECT DELAY</impact>
        <advice>TAKE LEFT LANE</advice>
      </incident>
      <incident id = "2">
        <incident_type>CONSTRUCTION</incident_type>
        <description>REGULAR MAINTENANCE</description>
        <route type = "Interstate" name = "I-95" direction = "NORTH"/>
        <geo_location  longitude = "-71.3555" latitude  = "42.3601" radius =
          "30.0"/>
        <location_range>
          <at_location>EXIT 36</at_location>
        </location_range>
        <time_range>
          <at_time  month = "6" day = "19" year = "2001" hour = "5" minute =
             "28" meridian = "PM"/>
         </time_range>
        <severity>MINOR</severity>
        <speed>35.0</speed>
        <impact>EXPECT DELAY</impact>
        <advice>USE I-495</advice>
      </incident>
    </incident_list>
  </traffic_report>
 </report_list>
</traffic_response>

15.1.12.3 トラフィックJava API

この項では、ロケーション・アプリケーション・コンポーネント用のトラフィックJava APIについて説明します。

15.1.12.3.1 CityInfoクラス

CityInfoクラスは、1つの都市の名前、州名および国名を提供します。このクラスの一般的な用途は、都市名、州名(オプション)および国名を使用してCityInfoインスタンスを作成し、それを都市レベル、ルート・レベルまたは都市のポイントおよび半径レベルでトラフィック・レポートに対する問合せに渡すことです。

15.1.12.3.2 Cityインタフェース

Cityインタフェースは、指定されたサービス・プロバイダからの1つの都市に関する情報を提供します。この情報には、都市名、州名、国名およびルート情報が含まれます。Cityインスタンスは、TrafficReportインタフェースから取得できます。

15.1.12.3.3 RouteInfoクラス

RouteInfoクラスは、ルートの名前とタイプを提供します。このクラスの一般的な用途は、RouteInfoインスタンスを作成し、それをルート・レベルのトラフィック・レポートの問合せに渡すことです。

15.1.12.3.4 TrafficRouteインタフェース

TrafficRouteインタフェースは、指定されたサービス・プロバイダからの1つのルートに関する情報を提供します。この情報には、ルート名、ルートのタイプ、ルートを表すジオメトリおよび都市名が含まれます。TrafficRouteインスタンスは、TrafficIncidentインタフェースから取得できます。

15.1.12.3.5 TrafficReportインタフェース

TrafficReportインタフェースは、レポート時刻、事象数、プロバイダ情報、都市および事象など、事象ベースのトラフィック・レポートに関する情報を提供します。レポートを作成して、アプリケーションのユーザーまたは管理者に表示できます。

15.1.12.3.6 TrafficIncidentインタフェース

TrafficIncidentインタフェースは、重大度、タイプ、説明、発生したルートと方向、ロケーション、時間帯、影響およびアドバイスなど、トラフィック関連の事象に関する情報を提供します。

15.1.12.3.7 TrafficReporterインタフェース

TrafficReporterインタフェースは、様々な問合せに基づいてトラフィック・レポートを戻すファンクションを提供します。次の種類の問合せがサポートされます。

  • 都市に関する情報(都市名、州名[オプション]、国名)を指定すると、そのレポートが戻されます。

  • ルート(方向付きまたは方向なし)とそのルートを含む都市に関する情報を指定すると、そのレポートが戻されます。

  • ポイントの緯度と経度の座標と半径を指定すると、エリアのレポートが戻されます。

  • ロケーションの住所と半径を指定すると、エリアのレポートが戻されます。

SpatialManager.createLocation()を使用してLocationのインスタンスを取得する場合は、都市名と国名を指定する必要があります。これらの各情報はLastLine属性を使用して組み合せないでください。Pointジオメトリの値をnullに設定すると、自動ジオコーディングを回避できます。

15.1.12.3.8 TrafficCityManagerインタフェース

TrafficCityManagerインタフェースは2つのファンクションを提供します。一方はトラフィック情報が提供されるすべての都市を取得するファンクションで、他方は指定された都市のルート情報を取得するファンクションです。この2つのファンクション・コールの一般的な用途は、アプリケーションでサポートされている都市とルートのドロップダウン・リストを作成することです。

15.1.12.4 トラフィック・サービスの構成

Wirelessのインストール中にリージョン・モデリング・データと都市有効範囲データがリポジトリにロードされた後、トラフィック・プロバイダとそのプロバイダでサポートされている都市を追加できます。

15.1.12.4.1 トラフィック・プロバイダの追加

新規のトラフィック・サービス・プロバイダに対するサポートを追加する手順は、次のとおりです。

  1. システム・マネージャを使用して、トラフィック・プロバイダ情報とトラフィック・レポートのキャッシュ時間を設定します。

  2. この新規プロバイダでサポートされている都市ごとに、リージョン・モデル・ツール(15.5項を参照)を使用して、有効なGEOMETRY列の値など、その都市のCITY表にエントリがあるかどうかを調べます。ジオメトリなど、都市のエントリがない場合は追加します。

  3. この都市のIDを取得してメモします。

  4. SQL*Plusを使用してWirelessリポジトリに接続します。

  5. このトラフィック・サービス・プロバイダでサポートされている都市ごとに、CITY_COVERAGE表のCOVERED_BY_TRAFFIC列の値を'Y'に設定し、都市のID値を使用して更新を実行します。次に例を示します。

    UPDATE city_coverage SET covered_by_traffic = 'Y' WHERE id = 12345;
    COMMIT;
    
    

    この都市のCITY_COVERAGE表にエントリが存在しない場合は、1行を追加してCOVERED_BY_TRAFFIC列の値を'Y'に設定し、この表内のID値がCITY表内の都市のID値と同じであることを確認します。次に例を示します。

    INSERT INTO city_coverage (id, name, state_name, country_name,
         covered_by_traffic) VALUES (10750, 'BOSTON', 'MA', 'US', 'Y');
    COMMIT;
    
    
15.1.12.4.2 プロバイダでサポートされている都市の追加

既存のトラフィック・サービス・プロバイダの新規の都市に対するサポートを追加する手順は、次のとおりです。

  1. この新規プロバイダでサポートされている都市ごとに、リージョン・モデル・ツール(15.5項を参照)を使用して、有効なGEOMETRY列の値など、その都市のCITY表にエントリがあるかどうかを調べます。ジオメトリなど、都市のエントリがない場合は追加します。

  2. この都市のIDを取得してメモします。

  3. SQL*Plusを使用してWirelessリポジトリに接続します。

  4. この都市のCITY_COVERAGE表にエントリがある場合は、CITY_COVERAGE表のCOVERED_BY_TRAFFIC列の値を'Y'に設定し、都市のID値を使用して更新を実行します。次に例を示します。

    UPDATE city_coverage SET covered_by_traffic = 'Y' WHERE id = 12345;
    COMMIT;
    
    

    この都市のCITY_COVERAGE表にエントリが存在しない場合は、1行を追加してCOVERED_BY_TRAFFIC列の値を'Y'に設定し、この表内のID値がCITY表内の都市のID値と同じであることを確認します。次に例を示します。

    INSERT INTO city_coverage (id, name, state_name, country_name,
         covered_by_traffic) VALUES (10750, 'BOSTON', 'MA', 'US', 'Y');
    COMMIT;
    

15.1.13 ロケーション・ベースのサービスの例

Oracle Application Server Wirelessには、ロケーション・ベースの例が用意されています。これらのサンプルは、ロケーション・ベースのサービスの理解や、アプリケーション開発の基礎に使用できます。次に使用例を示します。

フィールド・サービス技術者が、顧客のオフィスでサービス・リクエストに対応しています。プロジェクトの終了時に、機器の他の部分が故障していることに気付きます。機器に近づき、携帯端末を取り出して新規サービス・リクエストの作成ボタンをクリックします。技術者の位置はサービス・ステーションで自動的に記録され、メニューが表示されます。技術者はこのメニューで、新しいリクエストの説明を入力して地図を添付し、現場への道順を入力します。入力した情報はすべてサービス・ステーションに送信され、新しいリクエストに対応する別の技術者に自動的に通知が送信されます。

開発オプション

Oracle LBSアプリケーションの開発者には、どのように解決するかを決定する際にいくつかの選択肢があります。

  • サーバー上で動作するアプリケーションを作成している場合は、サーバー側のJava APIか、Java Server Pages(JSP)タグを事前定義済のJSPタグ・ライブラリから使用する必要があります。

  • リモートで動作するアプリケーションを作成している場合は、Wireless Developer Kit(WDK)が適しています。これらのオプションの詳細は、第8章「OracleAS Wireless Developer Kit」を参照してください。

各例の説明

サンプル・ディレクトリの例では、前述のアプリケーション開発の方法が説明されています。それぞれのアプローチには、Geocoder、Mapper、Routerの機能を示す3つの例があります。

Javaという名前の1つ目のフォルダには、サーバー側のJava APIの例が3つ格納されています。1つ目のGeocoderExample.jspでは、LBS Geocoderの機能が説明されています。2つ目のMapperExample.jspでは、Mapperの機能が説明されています。3つ目のRouterExample.jspでは、Routerの機能が説明されています。

JSPという名前の2つ目のフォルダには、JSPタグ・ライブラリを使用する3つの例が格納されています。1つ目のGeocoderExample.jspでは、LBS Geocoderの機能が説明されています。2つ目のMapperExample.jspでは、Mapperの機能が説明されています。3つ目のRouterExample.jspでは、Routerの機能が説明されています。

WDKという名前の3つ目のフォルダには、Wireless Developer Kitを使用する3つの例が格納されています。1つ目のGeocoderExampleWDK.javaでは、LBS Geocoderの機能が説明されています。2つ目のMapperExampleWDK.javaでは、Mapperの機能が説明されています。3つ目のRouterExampleWDK.javaでは、Routerの機能が説明されています。

LBSプラットフォームには、Geocoder、Mapper、Routerの他に、イエロー・ページ・ビジネス・ファインダなどのいくつかの機能が用意されています。YP機能のデモにはやや複雑な設定が必要になるため、Oracle Technology Networkから設定方法を別途ダウンロードできます。

アプリケーションの開発

LBSの例では、LBSプラットフォームの基本的な機能を最小限のコードで説明しています。各例はそれぞれ独立しており、LBSプラットフォームの1つの機能のみを説明します。一般的なLBSアプリケーションを作成する場合は、同一アプリケーションでこれらのコンポーネントを組み合せて使用します。たとえば、ユーザーの位置を特定して地図上に表示し、付近のレストランを3軒検索して1番近いレストランまでの道順をユーザーに知らせるアプリケーションを作成するとします。このようなアプリケーションでは、LBSの多くの機能を使用します。この場合は、Positionerがユーザーの位置を検索し、Mapperがユーザーの位置を地図上に表示します。また、YPFinderが付近のレストランを3軒検索し、Routerがユーザーに道順を示します。

設定要件

サーバー・サイドJavaとJSPタグの例を実行するには、ORACLE_HOME/j2ee/OC4J_Wireless/applications/wireless/location-web/ディレクトリからファイルをコピーする必要があります。さらに、サーバー管理者が有効なGeocoder、Mapper、Routerを構成する必要があります。構成するプロバイダの詳細および現在使用可能なプロバイダの一覧は、このマニュアルまたはOTNを参照してください。eLocationを構成するには、OTNを参照してください。

WDKの例はリモート・クライアントまたはJDeveloperで実行できます。WDKの例を正常にコンパイルまたは実行するには、次のJARファイルが必要です。

  • ORACLE_HOME/wireless/lib/wdk.jar

  • ORACLE_HOME/j2ee/home/lib/http_client.jar

  • ORACLE_HOME/lib/xmlparserv2.jar

  • ORACLE_HOME/soap/soap.jar

さらに、プロバイダは、WDKがリクエストとして指定するインスタンス上で正しく構成する必要があります。プロバイダの構成情報は、このマニュアルおよびOTNを参照してください。

15.2 ロケーション・ベースのアプリケーションの開発

次のいずれかのアプローチを使用して、ロケーション・ベースのアプリケーションを開発できます。

Java Application Programming Interface(API)を使用するよりは、JSPファイルでタグを使用する方が容易で便利ですが、APIを使用することで柔軟性が得られ、アプリケーション・ロジックを制御できます。

15.2.1 Java Server Pages(JSP)ファイルの作成

アダプタを作成する必要がない場合は、ロケーション・ベースの機能をユーザーに提供するJava Server Pages(JSP)ファイルを作成します。

この項では、オラクル社が提供するタグの使用の詳細を説明します。それぞれの項に例が含まれています。

表15-1に、ロケーション・サービス用のJSPタグを各タグを使用できるアプリケーションのタイプ別に示し、それぞれのタグで指定する情報を簡単に説明します。

一方がiterateで始まり、もう一方がlistで始まる、類似した名前を持つタグのペアが多数あります(たとえば、iterateManeuversとlistManeuversがあります)。

  • iterateで始まる名前を持つタグは、コレクションを作成し、そのコレクション内の各項目を個別に表すため、ユーザーは特定の処理を実行できます。たとえば、Webページで各項目の後に横罫線を表示したり、各項目の前に静的テキストを表示できます。

  • listで始まる名前を持つタグは、戻り項目のフォーマットされていないリストを表します。これらのタグは、スクリプトやアルゴリズムで処理する目的で、単一のデータ・リストを渡す場合に役立ちますが、通常、Webページに直接表示するデータには使用されません。

ロケーション・サービス用のJSPタグは接頭辞とともに使用し、接頭辞はJSPファイルで指定する必要があります。次の例では、loc接頭辞を定義しています。この接頭辞は、特定のタグの他の例に使用されています。

<%@ taglib uri="LocationTags" prefix="loc" %>

次の例に、addressタグとともに使用されているloc接頭辞を示します。

<loc:address name="hq" type="oracle.panama.model.Location"
    businessName="Oracle Headquarters" firstLine="500 Oracle Parkway"
    city="Redwood City" state="CA" postalCode="94065" country="US"/>

15.2.1.1項では、ロケーション・サービス用の包括的なJSPの例について説明します。以降の各項(タグ名のアルファベット順)には、各タグに使用可能なすべてのパラメータの参照情報、つまりパラメータ名、説明および必須かどうかを記載しています。パラメータが必須の場合は、タグに含める必要があります。パラメータが必須でない場合は、省略するとサービス・プロバイダにより解析が実行されます。それぞれのタグの項にも、短い例が含まれています。

15.2.1.1 ロケーション・サービス用のJSPの例

この項では、ロケーション・サービスに関連する操作を実行するためのJSPコードの例を示します。これらの例では、住所は該当するタグ(<map>または<route>)のpoints属性に指定されています。

例15-4では、2つのロケーションの大きい地図と小さい地図が表示されます。

例15-4 JSPタグを使用したマッピング

<%@ taglib uri="LocationTags" prefix="loc" %>

<%!
  public String transformString(String orig)
  {
    String result = "";
    for (int i=0;i<orig.length();i++)
    {
      if (orig.charAt(i) == '&')      result = result + "&amp;";
      else if (orig.charAt(i) == '<') result = result + "&lt;";
      else if (orig.charAt(i) == '>') result = result + "&gt;";
      else                            result = result + orig.charAt(i);
    }
    return result;
  }
%>

<SimpleResult>
    <loc:address
      name="NEDC"
      type="oracle.panama.model.Location"
      businessName="NEDC"
      firstLine="1 Oracle Dr"
      city="Nashua"
      state="NH"
      postalCode="03062"
      country="US"/>
    <loc:map
      name="NEDCSmall" type="oracle.panama.spatial.jsptags.beans.Map" xres="400"
         yres="300" points="NEDC">
    </loc:map>

    <loc:address
      name="HQ"
      type="oracle.panama.model.Location"
      businessName="HQ"
      firstLine="500 Oracle Parkway"
      city="Redwood City"
      state="CA"
      postalCode="94065"
      country="US"/>
    <loc:map name="HQSmall" type="oracle.panama.spatial.jsptags.beans.Map"
       xres="400" yres="300" points="HQ">
    </loc:map>

    <loc:map name="BothSmall" type="oracle.panama.spatial.jsptags.beans.Map"
       xres="400" yres="300" points="NEDC HQ"/>
    <loc:map name="NEDCLarge" type="oracle.panama.spatial.jsptags.beans.Map"
       xres="800" yres="600" points="NEDC"/>
    <loc:map name="HQLarge"   type="oracle.panama.spatial.jsptags.beans.Map"
       xres="800" yres="600" points="HQ"/>
    <loc:map name="BothLarge" type="oracle.panama.spatial.jsptags.beans.Map"
       xres="800" yres="600" points="NEDC HQ"/>

    <SimpleImage target="<%= transformString(NEDCLarge.toString()) %>"
       src="<%= transformString(NEDCSmall.toString()) %>"/>

    <SimpleImage target="<%= transformString(HQLarge.toString()) %>"
       src="<%= transformString(HQSmall.toString()) %>"/>

    <SimpleImage target="<%= transformString(BothLarge.toString()) %>"
       src="<%= transformString(BothSmall.toString()) %>"/>
</SimpleResult>

例15-5では、2つのロケーション間のルートと運転方向(経路)が表示されます。

例15-5 JSPタグを使用したルーティング

<%@ taglib uri="LocationTags" prefix="loc" %>

<%!
  public String transformString(String orig)
  {
    String result = "";
    for (int i=0;i<orig.length();i++)
    {
      if (orig.charAt(i) == '&')      result = result + "&amp;";
      else if (orig.charAt(i) == '<') result = result + "&lt;";
      else if (orig.charAt(i) == '>') result = result + "&gt;";
      else                            result = result + orig.charAt(i);
    }
    return result;
  }
%>

<SimpleResult>
  <loc:address
    name="NEDC"
    type="oracle.panama.model.Location"
    businessName="NEDC"
    firstLine="1 Oracle Dr"
    city="Nashua"
    state="NH"
    postalCode="03062"
    country="US"/>
  <loc:address
    name="HQ"
    type="oracle.panama.model.Location"
    businessName="HQ"
    firstLine="500 Oracle Parkway"
    city="Redwood City"
    state="CA"
    postalCode="94065"
    country="US"/>
  <loc:route name="myRoute" type="oracle.panama.spatial.jsptags.beans.Route"
     xres="800" yres="600" points="NEDC HQ">
  </loc:route>

  <SimpleImage src="<%= transformString(myRoute.getMap()) %>"/>

  <SimpleText>
    <loc:iterateManeuvers name="aManeuver" type="oracle.panama.spatial.jsptags.beans.Maneuver" routeID="myRoute">
      <SimpleTextItem>
        <%= aManeuver.getNarrative() %>
      </SimpleTextItem>
    </loc:iterateManeuvers>
  </SimpleText>
</SimpleResult>

例15-6では、ロケーションから指定した範囲内にある名前別のビジネス・ディレクトリ(YP)情報、特に、オラクル本社に最も近い10軒のスターバックスを含む地図が表示されます。

例15-6 JSPタグを使用した名前別のビジネス・ディレクトリ(YP)

<%@ taglib uri="LocationTags" prefix="loc" %>

<%!
  public String transformString(String orig)
  {
    String result = "";
    for (int i=0;i<orig.length();i++)
    {
      if (orig.charAt(i) == '&')      result = result + "&amp;";
      else if (orig.charAt(i) == '<') result = result + "&lt;";
      else if (orig.charAt(i) == '>') result = result + "&gt;";
      else                            result = result + orig.charAt(i);
    }
    return result;
  }
%>

<SimpleResult>
  <loc:address
    name="HQ"
    type="oracle.panama.model.Location"
    businessName="HQ"
    firstLine="500 Oracle Parkway"
    city="Redwood City"
    state="CA"
    postalCode="94065"
    country="US"/>

  <loc:businesses
    name="starbucks"
    type="java.util.Collection"
    businessName="Starbucks"
    centerID="HQ"
    nearestN="10"/>
  <loc:map name="starbucksMap" type="oracle.panama.spatial.jsptags.beans.Map"
     xres="800" yres="600" points="starbucks">
  </loc:map>

  <SimpleImage src="<%= transformString(starbucksMap.toString()) %>"/>

  <SimpleText>
  <loc:iterateBusinesses name="singleStarbucks" type="oracle.panama.model.Point"
     collection="starbucks">
    <SimpleTextItem> <%= singleStarbucks %> </SimpleTextItem>
  </loc:iterateBusinesses>
  </SimpleText>
</SimpleResult>

例15-7では、指定したエリア内のカテゴリ別ビジネス・ディレクトリ(YP)情報、特に、カリフォルニア州サンフランシスコにあるすべての自動車ディーラ(新車)を含む地図が表示されます。

例15-7 JSPタグを使用したカテゴリ別のビジネス・ディレクトリ(YP)

<%@ taglib uri="LocationTags" prefix="loc" %>

<%!
  public String transformString(String orig)
  {
    String result = "";
    for (int i=0;i<orig.length();i++)
    {
      if (orig.charAt(i) == '&')      result = result + "&amp;";
      else if (orig.charAt(i) == '<') result = result + "&lt;";
      else if (orig.charAt(i) == '>') result = result + "&gt;";
      else                            result = result + orig.charAt(i);
    }
    return result;
  }
%>

<SimpleResult>
  <loc:category name="automotive"       type="oracle.panama.spatial.yp.YPCategory" categoryName="Automotive">
  </loc:category>

  <loc:category name="automotiveDealers"
     type="oracle.panama.spatial.yp.YPCategory" categoryName="Dealers"
     parentCategory="automotive">
  </loc:category>

  <loc:category name="newAutomotiveDealers"
     type="oracle.panama.spatial.yp.YPCategory" categoryName="New"
     parentCategory="automotiveDealers">
  </loc:category>

  <loc:businesses name="dealers" type="java.util.Collection"
     categoryID="newAutomotiveDealers" country="US" state="CA"
     city="San Francisco"/>

  <loc:map name="dealerMap" type="oracle.panama.spatial.jsptags.beans.Map"
     xres="800" yres="600" points="dealers">
  </loc:map>

  <SimpleImage src="<%= transformString(dealerMap.toString()) %>"/>

  <SimpleText>
  <loc:iterateBusinesses name="dealer" type="oracle.panama.model.Point"
     collection="dealers">
    <SimpleTextItem>
      <%= transformString(dealer.toString()) %>
    </SimpleTextItem>
  </loc:iterateBusinesses>
  </SimpleText>
</SimpleResult>

15.2.1.2 addMembers

addMembersタグでは、モバイル・コミュニティに1人以上のメンバーを追加します。モバイル・コミュニティの説明は、15.3.2.6項「モバイル・コミュニティ」を参照してください。

表15-2に、addMembersタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-2 addMembersタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: add_members

type

オブジェクトのタイプ。Booleanである必要があります(操作に成功するとTRUE、失敗するとFALSE)。

userName

操作をリクエストするOracle Application Server Wirelessユーザーの名前。デフォルトは現行のユーザーです。

×

communityID

メンバーを追加するコミュニティに関連付けられた変数の名前。例: comm_private

communityMembers

コミュニティに追加されるOracle Application Server Wirelessユーザーがスペースで区切られたリスト。


次の例では、ユーザーMikeのリクエストによって、ユーザーSongを変数comm_privateに関連付けられたモバイル・コミュニティに追加しています。また、このコミュニティのメンバーのjava.util.Enumerationオブジェクトを作成しています。

<loc:addMembers
      name="add_members"
      type="Boolean"
      userName="Mike"
      communityID="comm_private"
      communityMembers="Song" />
<loc:listAllMembers
      name="list_all_mem1"
      type="java.util.Enumeration"
      communityID="comm_private" />
<%= list_all_mem1.toString() %>

15.2.1.3 address

addressタグでは、ジオコーディングするか、マップに配置するか、ルートの始点住所または終点住所として使用するか、ビジネス・ディレクトリ問合せの中心として使用する住所を指定します。

表15-3に、addressタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-3 addressタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: office

type

オブジェクトのタイプ。oracle.panama.model.Locationにする必要があります。

businessName

指定した住所にあるビジネスまたは他のエンティティの説明的な名前。例: My office

×

firstLine

番地。

×

city

都市名。

×

state

2文字の州コード(US)または郡コード(カナダ)。

×

postalCode

郵便番号。

×

country

国名。

×

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、2つの住所(ある人のオフィスと自宅)間にルートmyRouteを作成して、ルートのマップとそれに続く横罫線を表示し、(iterateManeuversタグとgetMapおよびgetNarrativeファンクション・コールを使用して)各運転経路とそれに続く横罫線を表しています。また、各運転経路の説明はリンクであり、ユーザーがクリックするとその経路マップを表示できます。

<loc:route name="myRoute" type="oracle.panama.spatial.jsptags.beans.Route" xres="800" yres="600">
   <loc:address
        name="office"
        type="oracle.panama.model.Location"
        businessName="My office"
        firstLine="1 Oracle Dr"
        city="Nashua"
        state="NH"
        postalCode="03062"
        country="US"/>
   <loc:address
        name="home"
        type="oracle.panama.model.Location"
        businessName="My home"
        firstLine="2 Royal Crest Dr"
        city="Nashua"
        state="NH"
        postalCode="03060"
        country="US"/>
</loc:route>

<img src="<%= myRoute.getMap() %>">
<HR>

<loc:iterateManeuvers name="aManeuver" type="oracle.panama.spatial.jsptags.beans.Maneuver" routeID="myRoute">
      <a href="<%= aManeuver.getMap() %>">
        <%= aManeuver.getNarrative() %>
      </a>
      <HR>
</loc:iterateManeuvers>

15.2.1.4 businesses

businessesタグでは、1つ以上の属性を共有するビジネスの(oracle.panama.spatial.yp.YPBusinessオブジェクトの)コレクションを作成します。

表15-4に、businessesタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-4 businessesタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: mikes_hardware_stores

type

オブジェクトのタイプ。java.util.Collectionにする必要があります。

businessName

指定した住所にあるビジネスまたは他のエンティティの説明的な名前。例: Mike's Hardware

×

categoryID

ビジネス・サービス・カテゴリの変数名。例: Automotive

×

keyword

nameまたはcategoryID内の検索用文字列。例: French

×

city

都市名。

×

state

2文字の州コード(US)または郡コード(カナダ)。

×

postalCode

郵便番号。

×

country

国名。

×

centerID

検索を開始する中心ポイントとして使用するポイントの変数名(住所の場合など)。centerIDを指定した場合は、radiusまたはnearestNも指定する必要があります。

×

radius

検索対象となる円の半径の長さ(m単位)。radiusを指定した場合は、centerIDも指定する必要があります。

×

nearestN

問合せ要件を満たす最も近接している結果の最大数(たとえば、ホテルまたはユーザーの現在の位置に最も近接している3軒の銀行の検索など)。nearestNを指定した場合は、centerIDも指定する必要があります。

×

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次のbusinessesタグの例では、アメリカのカリフォルニア州内のビジネスBordersをすべて指定します。businessesタグをmapタグで囲むと、各Borders書店を含むラベル付きのマップが作成されます。

<loc:map name="map1" type="oracle.panama.spatial.jsptags.beans.Map"
       xres="1000" yres="500">
   <loc:businesses name="bord" type="java.util.Collection" businessName="Borders"
        country="US" state="CA"/>
</loc:map>

15.2.1.5 category

categoryタグでは、ビジネス・カテゴリ(oracle.panama.spatial.yp.YPCategoryオブジェクト)を作成します。

表15-5に、categoryタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-5 categoryタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: cat_dealers

type

オブジェクトのタイプ。oracle.panama.spatial.yp.YPCategoryにする必要があります。

parentCategory

親カテゴリの指定を含むオブジェクトの名前(親オブジェクトは、あらかじめcategoryタグを使用して作成します)。このパラメータを指定しない場合は、ルートとみなされます。

×

categoryName

カテゴリ名。例: Dealers


次の例では2つのcategoryタグを使用しています。最初のcategoryタグでは、カテゴリAutomotiveを指定するオブジェクトcat_autoを作成します。2番目のcategoryタグでは、カテゴリDealersを親カテゴリcat_auto(Automotive)の子として指定するオブジェクトcat_dealersを作成します。

<loc:category name="cat_auto" type="oracle.panama.spatial.yp.YPCategory"
   categoryName="Automotive" />
<loc:category name="cat_dealers" type="oracle.panama.spatial.yp.YPCategory"
   parentCategory="cat_auto" categoryName="Dealers" />

15.2.1.6 createPrivateCommunity

createPrivateCommunityタグでは、プライベート・モバイル・コミュニティを作成します。コミュニティのタイプを含むモバイル・コミュニティの説明は、15.3.2.6項「モバイル・コミュニティ」を参照してください。

表15-6に、createPrivateCommunityタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-6 createPrivateCommunityタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: comm_private

type

オブジェクトのタイプ。oracle.panama.model.Communityにする必要があります。

userName

コミュニティの所有者になるOracle Application Server Wirelessユーザーの名前。デフォルトは現行のユーザーです。

×

communityName

コミュニティの説明的な名前。例: My Private Community

communityMembers

コミュニティに追加されるOracle Application Server Wirelessユーザーがスペースで区切られたリスト(追加されていない場合)。

×

returnNullIfExists

TRUE(デフォルト)では、そのコミュニティがすでに存在する場合、NULL値が戻されます。FALSEでは、そのコミュニティがすでに存在する場合、既存のコミュニティが戻されます。

×


次の例では、ユーザーMikeが所有するプライベート・コミュニティを作成し、2人のユーザー(MikeおよびJing)を追加しています。コミュニティがすでに存在する場合、コミュニティは作成されません。また、コミュニティに関する情報を表示しています。

<loc:createPrivateCommunity
      name="comm_private"
      type="oracle.panama.model.Community"
      userName="Mike"
      communityName="My Private Community"
      communityMembers="Mike Jing"
      returnNullIfExists="FALSE" />
<%= comm_private.toString() %>

15.2.1.7 createSharedCommunity

createSharedCommunityタグでは、共有モバイル・コミュニティを作成します。コミュニティのタイプを含むモバイル・コミュニティの説明は、15.3.2.6項「モバイル・コミュニティ」を参照してください。

表15-7に、createSharedCommunityタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-7 createSharedCommunityタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: comm_shared

type

オブジェクトのタイプ。oracle.panama.model.Communityにする必要があります。

userName

コミュニティの所有者になるOracleAS Wirelessユーザーの名前。デフォルトは現行のユーザーです。

×

communityName

コミュニティの説明的な名前。例: My Shared Community

communityMembers

コミュニティに追加されるOracle Application Server Wirelessユーザーがスペースで区切られたリスト(追加されていない場合)。

×

returnNullIfExists

TRUE(デフォルト)では、そのコミュニティがすでに存在する場合、NULL値が戻されます。FALSEでは、そのコミュニティがすでに存在する場合、既存のコミュニティが戻されます。

×


次の例では、ユーザーMikeが所有する共有コミュニティを作成し、2人のユーザー(MikeおよびJing)を追加しています。コミュニティがすでに存在する場合、コミュニティは作成されません。また、コミュニティに関する情報を表示しています。

<loc:createSharedCommunity
      name="comm_shared"
      type="oracle.panama.model.Community"
      userName="Mike"
      communityName="My Shared Community"
      communityMembers="Mike Jing"
      returnNullIfExists="FALSE" />
<%= comm_private.toString() %>

15.2.1.8 createSystemCommunity

createSystemCommunityタグでは、システム・モバイル・コミュニティを作成します。コミュニティのタイプを含むモバイル・コミュニティの説明は、15.3.2.6項「モバイル・コミュニティ」を参照してください。

表15-8に、createSystemCommunityタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-8 createSystemCommunityタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: comm_system

type

オブジェクトのタイプ。oracle.panama.model.Communityにする必要があります。

userName

コミュニティの所有者になるOracle Application Server Wirelessユーザーの名前。デフォルトは現行のユーザーです。

×

communityName

コミュニティの説明的な名前。例: My System Community

communityMembers

コミュニティに追加されるOracle Application Server Wirelessユーザーがスペースで区切られたリスト(追加されていない場合)。

×

returnNullIfExists

TRUE(デフォルト)では、そのコミュニティがすでに存在する場合、NULL値が戻されます。FALSEでは、そのコミュニティがすでに存在する場合、既存のコミュニティが戻されます。

×


次の例では、ユーザーMikeが所有するシステム・コミュニティを作成し、2人のユーザー(MikeおよびJing)を追加しています。コミュニティがすでに存在する場合、コミュニティは作成されません。また、コミュニティに関する情報を表示しています。

<loc:createSystemCommunity
      name="comm_system"
      type="oracle.panama.model.Community"
      userName="Mike"
      communityName="My System Community"
      communityMembers="Mike Jing"
      returnNullIfExists="FALSE" />
<%= comm_private.toString() %>

15.2.1.9 defaultLocationMark

defaultLocationbMarkタグでは、指定したユーザーのデフォルト・ロケーション・マークを表すオブジェクトを作成します。このタグを使用すると、ユーザーのデフォルト・ロケーション・マークを検索できます。

表15-9に、defaultLocationbMarkタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-9 defaultLocationMarkタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: user_loc

type

オブジェクトのタイプ。oracle.panama.model.LocationMarkにする必要があります。

userName

デフォルト・ロケーション・マークの検索対象であるOracle Application Server Wirelessのユーザーの名前。デフォルトは現行のユーザーです。

×


次の例では、ユーザーMikeのデフォルト・ロケーション・マークを表すオブジェクトを作成し、そのオブジェクトに関する情報を表示しています。

<loc:defaultLocationMark
      name="user_mark"
      type="oracle.panama.model.LocationMark"
      userName="Mike"  />
<%= user_mark.toString() %>

15.2.1.10 deleteCommunity

deleteCommunityタグでは、プライベート、共有またはシステム・モバイル・コミュニティを削除します。コミュニティのタイプを含むモバイル・コミュニティの説明は、15.3.2.6項「モバイル・コミュニティ」を参照してください。

表15-10に、deleteCommunityタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-10 deleteCommunityタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: delete_comm1

type

オブジェクトのタイプ。Booleanである必要があります(操作に成功するとTRUE、失敗するとFALSE)。

userName

操作をリクエストするOracle Application Server Wirelessユーザーの名前。デフォルトは現行のユーザーです。

×

communityName

コミュニティの説明的な名前(変数名ではない)。例: My Private Community


次の例では、ユーザーMikeのリクエストによって、コミュニティMy Private Communityを削除し、操作の結果(TRUEまたはFALSE)を表示しています。

<loc:deleteCommunity
      name="delete_comm1"
      type="Boolean"
      userName="Mike"
      communityName="My Private Community"  />
<%= delete_comm1.toString() %>

15.2.1.11 drivingDistance

drivingDistanceタグは、プロバイダによって決定される、ルートまたは運転経路の走行距離を表します。

表15-11に、drivingDistanceタグのパラメータを示します。routeおよびmaneuverはオプションですが、これらのパラメータのどちらか1つを指定する必要があります。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-11 drivingDistanceタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: drive_dist

type

オブジェクトのタイプ。Stringにする必要があります。

route

ルートの名前。例: myRoute

×

maneuver

経路の名前。

×


次の例では、2つの住所(ある人のオフィスと自宅)間にルートmyRouteを作成し、そのルートの走行距離を表示しています。

<loc:route name="myRoute" type="oracle.panama.spatial.jsptags.beans.Route" xres="800" yres="600">
   <loc:address
        name="office"
        type="oracle.panama.model.Location"
        businessName="My office"
        firstLine="1 Oracle Dr"
        city="Nashua"
        state="NH"
        postalCode="03062"
        country="US"/>
   <loc:address
        name="home"
        type="oracle.panama.model.Location"
        businessName="My home"
        firstLine="2 Royal Crest Dr"
        city="Nashua"
        state="NH"
        postalCode="03060"
        country="US"/>
</loc:route>
<loc:drivingDistance name="drive_dist" type="String" route="myRoute" />
<%= drive_dist.toString() %>

15.2.1.12 drivingTime

drivingTimeタグでは、ルートの走行時間の見積りを含むオブジェクトを作成します。

表15-12に、drivingTimeタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-12 drivingTimeタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: drive_time

type

オブジェクトのタイプ。Stringにする必要があります。

route

ルートの名前。例: myRoute


次の例では、2つの住所(ある人のオフィスと自宅)間にルートmyRouteを作成し、そのルートの走行時間を表示しています。

<loc:route name="myRoute" type="oracle.panama.spatial.jsptags.beans.Route" xres="800" yres="600">
   <loc:address
        name="office"
        type="oracle.panama.model.Location"
        businessName="My office"
        firstLine="1 Oracle Dr"
        city="Nashua"
        state="NH"
        postalCode="03062"
        country="US"/>
   <loc:address
        name="home"
        type="oracle.panama.model.Location"
        businessName="My home"
        firstLine="2 Royal Crest Dr"
        city="Nashua"
        state="NH"
        postalCode="03060"
        country="US"/>
</loc:route>
<loc:drivingTime name="drive_time" type="String" route="myRoute" />
<%= drive_time.toString() %>

15.2.1.13 geocode

geocodeタグでは、ジオコーディングするか、マップに配置するか、ルートの始点住所または終点住所として使用するか、ビジネス・ディレクトリ問合せの中心として使用する住所を指定します。

表15-13に、geocodeタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-13 geocodeタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: hardware1

type

オブジェクトのタイプ。oracle.panama.model.Locationにする必要があります。

businessName

指定した住所にあるビジネスまたは他のエンティティの説明的な名前。例: Mike's Hardware

×

houseNumber

住所の番地番号。

×

streetName

番地。

secondLine

番地の2行目。

×

intersection

houseNumberが指定されていない場合は、交差する番地。

×

city

都市名。

state

2文字の州コード(US)または郡コード(カナダ)。

postalCode

郵便番号(主要な部分)。例: 01742

postalCodeExt

4桁の追加番号など、郵便番号の拡張部分。

×

country

国名または国コード。

makeCorrections

ジオコーディング・プロバイダで住所のつづりの間違いを訂正する場合はTRUE、ジオコーディング・プロバイダで住所のつづりの間違いを訂正しない場合はFALSE

provider

優先順位がある場合は、リクエストに対して最初に選択されるサービス・プロバイダの名前。

×


次のgeocodeタグの例では、ジオコーディングする(店舗Mike's Hardwareの)住所を指定しています。

<loc:geocode
  name = "hardware1"
  type = "oracle.panama.model.Location"
  businessName = "Mike's Hardware"
  houseNumber = "22"
  streetName = "Monument Sq"
  city = "Concord"
  state = "MA"
  postalCode = "01742"
  country = "US"
  makeCorrections = "TRUE"  />

15.2.1.14 geometry

geometryタグでは、タイプoracle.panama.model.Pointのポイントのjava.util.Listオブジェクトを作成します。

表15-14に、geometryタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)pointsrouteまたはmaneuverのパラメータを指定する必要があります。

表15-14 geometryタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: my_geom

type

オブジェクトのタイプ。java.util.Listにする必要があります。

points

ジオメトリを構成するポイントの変数の名前。

×

route

ジオメトリを構成するルートの変数の名前。このパラメータを指定する場合、ルート・オブジェクトを作成したrouteタグには、requestGeom="TRUE"パラメータを指定しておく必要があります。

×

maneuver

ジオメトリを構成する経路の変数の名前。

×


次の例では、あるユーザーのオフィスの住所と自宅の住所の間にルートを作成し、geometryタグを使用してルート沿いのポイントのフォーマットされていないリストを作成しています。

<loc:route name="myRoute" type="oracle.panama.spatial.jsptags.beans.Route" xres="800" yres="600" requestGeom="true">
   <loc:address
        name="office"
        type="oracle.panama.model.Location"
        businessName="My office"
        firstLine="1 Oracle Dr"
        city="Nashua"
        state="NH"
        postalCode="03062"
        country="US"/>
   <loc:address
        name="home"
        type="oracle.panama.model.Location"
        businessName="My home"
        firstLine="2 Royal Crest Dr"
        city="Nashua"
        state="NH"
        postalCode="03060"
        country="US"/>
</loc:route>

<loc:geometry name="my_geom" type="java.util.List" route="myRoute" />
<%= my_geom.toString() %>

15.2.1.15 getCommunity

getCommunityタグでは、プライベート、共有またはシステム・モバイル・コミュニティの指定された名前に関連付けられたオブジェクトを戻します。コミュニティのタイプを含むモバイル・コミュニティの説明は、15.3.2.6項「モバイル・コミュニティ」を参照してください。

表15-15に、getCommunityタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-15 getCommunityタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: get_comm

type

オブジェクトのタイプ。oracle.panama.model.Communityにする必要があります。

userName

操作をリクエストするOracle Application Server Wirelessユーザーの名前。デフォルトは現行のユーザーです。

×

communityName

コミュニティの説明的な名前(変数名ではない)。例: My Private Community


次の例では、ユーザーMikeのリクエストによって、コミュニティMy Private Communityを戻し、そのコミュニティに関する情報を表示しています。

<loc:getCommunity
      name="get_comm"
      type="oracle.panama.model.Community"
      userName="Mike"
      communityName="My Private Community"  />
<%= get_comm.toString() %>

15.2.1.16 iterateBusinesses

iterateBusinessesタグは、businessesタグで戻されるコレクション内の個々のビジネスを表します。

表15-16に、iterateBusinessesタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-16 iterateBusinessesタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: singleStarbucks

type

オブジェクトのタイプ。oracle.panama.spatial.yp.YPBusinessにする必要があります。

collection

戻されるコレクションの名前。例: starbucks

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、Oracle本社に最も近接している10軒のスターバックスを示すマップを作成し、ロケーションごとにそれぞれの情報とそれに続く横罫線を表示しています。情報の各行はリンクであり、ユーザーがクリックしてそのロケーションと周辺地域の詳細なマップを表示できます。

<loc:address
      name="HQ"
      type="oracle.panama.model.Location"
      businessName="HQ"
      firstLine="500 Oracle Parkway"
      city="Redwood City"
      state="CA"
      postalCode="94065"
      country="US"/>
<loc:map name="starbucksMap" type="oracle.panama.spatial.jsptags.beans.Map" xres="800" yres="600">
    <loc:businesses
        name="starbucks"
        type="java.util.Collection"
        businessName="Starbucks"
        centerID="HQ"
        nearestN="10"/>
</loc:map>

<img src="<%= starbucksMap %>">
<HR>

<loc:iterateBusinesses name="singleStarbucks" type="oracle.panama.spatial.yp.YPBusiness" collection="starbucks">
  <loc:map name="singleStarbucksMap" type="oracle.panama.spatial.jsptags.beans.Map" xres="800" yres="600" points="singleStarbucks"/>
  <a href="<%= singleStarbucksMap %>">
    <%= singleStarbucks %>
  </a>
  <HR>
</loc:iterateBusinesses>

15.2.1.17 iterateBusinessesInCity

iterateBusinessesInCityタグは、指定した都市内の個々のビジネスを表します。

表15-17に、iterateBusinessesInCityタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-17 iterateBusinessesInCityタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: a_business_city

type

オブジェクトのタイプ。oracle.panama.spatial.yp.YPBusinessにする必要があります。

businessName

ビジネスの説明的な名前。例: Starbucks

×

categoryID

カテゴリに関連付けられた変数の名前(カテゴリが問合せに含まれる場合)。

×

keyword

キーワード(キーワードが問合せに含まれる場合)。

×

city

都市名。

state

2文字の州コード(US)または郡コード(カナダ)。

country

国名。

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、California州San FranciscoにあるすべてのBorders書店を個別に表しています。ロケーションごとに、そのロケーションに関する情報とそれに続く横罫線が表示されます。

<loc:iterateBusinessesInCity name="a_business_city"
   type="oracle.panama.spatial.yp.YPBusiness"
   city="San Francisco" state="CA" country="US" businessName="Borders">
   <%= a_business_city.toString() %>
   <HR>
</loc:iterateBusinessesInCity>

15.2.1.18 iterateBusinessesInCorridor

iterateBusinessesInCorridorタグは、コリドー内の個々のビジネスを表します。コリドーとは、ルートの作成時に交差点や出口などを表すポイントのコレクションです。

表15-18に、iterateBusinessesInCorridorタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-18 iterateBusinessesInCorridorタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: hardware_1

type

オブジェクトのタイプ。oracle.panama.spatial.yp.YPBusinessにする必要があります。

businessName

ビジネスの説明的な名前。例: Starbucks

×

categoryID

カテゴリに関連付けられた変数の名前(カテゴリが問合せに含まれる場合)。

×

keyword

キーワード(キーワードが問合せに含まれる場合)。

×

corridorID

コリドーに関連付けられた変数の名前。

radiusInMeters

コリドー内の各ポイントを中心としたm単位の半径。

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、オフィスと他の場所の間にルートを作成し、そのルートに関連付けられたコリドー内のすべてのポイントから3000m以内のスターバックスを個別に表しています。この例では、ロケーションごとに、そのロケーションに関する情報とそれに続く横罫線が表示されます。

<loc:route name="myRoute" type="oracle.panama.spatial.jsptags.beans.Route" xres="800" yres="600" requestGeom="true">
    <loc:address
        name="office"
        type="oracle.panama.model.Location"
        businessName="Some office"
        firstLine="500 Oracle Parkway"
        city="Redwood City"
        state="CA"
        postalCode="94065"
        country="US"/>
    <loc:address
        name="ucsb"
        type="oracle.panama.model.Location"
        businessName="UCSB"
        firstLine="6750 El Colegio Rd"
        city="Goleta"
        state="CA"
        postalCode="93117"
        country="US"/>
</loc:route>

<loc:geometry name="myRouteGeom" type="java.util.List" route="myRoute"/>

<loc:iterateBusinessesInCorridor name="a_business_corridor"
   type="oracle.panama.spatial.yp.YPBusiness"
   businessName="Starbucks" corridorID="myRouteGeom" radiusInMeters="3000">
   <%= a_business_corridor.toString() %>
   <HR>
</loc:iterateBusinessesInCorridor>

15.2.1.19 iterateBusinessesInPostalCode

iterateBusinessesInPostalCodeタグは、指定した郵便番号に該当する個々のビジネスを表します。

表15-19に、iterateBusinessesInPostalCodeタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-19 iterateBusinessesInPostalCodeタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: a_business_pcode

type

オブジェクトのタイプ。oracle.panama.spatial.yp.YPBusinessにする必要があります。

businessName

ビジネスの説明的な名前。例: Starbucks

×

categoryID

カテゴリに関連付けられた変数の名前(カテゴリが問合せに含まれる場合)。

×

keyword

キーワード(キーワードが問合せに含まれる場合)。

×

postalCode

郵便番号。

country

国名。

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、アメリカ合衆国内の郵便番号93117に該当するすべてのスターバックスを個別に表しています。ロケーションごとに、そのロケーションに関する情報とそれに続く横罫線が表示されます。

<loc:iterateBusinessesInPostalCode name="a_business_pcode"
   type="oracle.panama.spatial.yp.YPBusiness"
   postalCode="93117" country="US" businessName="Starbucks">
   <%= a_business_pcode.toString() %>
   <HR>
</loc:iterateBusinessesInPostalCode>

15.2.1.20 iterateBusinessesInRadius

iterateBusinessesInRadiusタグは、ポイントを中心に指定した半径(m単位)を持つ円形の地域内にある個々のビジネスを表します。

表15-20に、iterateBusinessesInRadiusタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-20 iterateBusinessesInRadiusタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: a_business_radius

type

オブジェクトのタイプ。oracle.panama.spatial.yp.YPBusinessにする必要があります。

businessName

ビジネスの説明的な名前。例: Starbucks

×

categoryID

カテゴリに関連付けられた変数の名前(カテゴリが問合せに含まれる場合)。

×

keyword

キーワード(キーワードが問合せに含まれる場合)。

×

centerID

問合せの中心ポイントに関連付けられた変数の名前。

radiusInMeters

centerIDを中心とした円の半径を表す数値(m単位)。

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、Oracle本社の住所に関連付けられたポイントから5000m(5Km)以内のすべてのスターバックスを個別に表しています。ロケーションごとに、そのロケーションに関する情報とそれに続く横罫線が表示されます。

<loc:address
      name="HQ"
      type="oracle.panama.model.Location"
      businessName="HQ"
      firstLine="500 Oracle Parkway"
      city="Redwood City"
      state="CA"
      postalCode="94065"
      country="US"/>
<loc:iterateBusinessesInRadius name="a_business_radius"
   type="oracle.panama.spatial.yp.YPCategory"
   businessName="Starbucks" centerID="HQ"  radiusInMeters="5000">
   <%= a_business_radius.toString() %>
   <HR>
</loc:iterateBusinessesInRadius>

15.2.1.21 iterateBusinessesInState

iterateBusinessesInStateタグは、指定した州内の個々のビジネスを表します。

表15-21に、iterateBusinessesInStateタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-21 iterateBusinessesInStateタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: a_business_state

type

オブジェクトのタイプ。oracle.panama.spatial.yp.YPBusinessにする必要があります。

businessName

ビジネスの説明的な名前。例: Starbucks

×

categoryID

カテゴリに関連付けられた変数の名前(カテゴリが問合せに含まれる場合)。

×

keyword

キーワード(キーワードが問合せに含まれる場合)。

×

state

2文字の州コード(US)または郡コード(カナダ)。

country

国名。

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、California州にあるすべてのスターバックスを個別に表しています。ロケーションごとに、そのロケーションに関する情報とそれに続く横罫線が表示されます。

<loc:iterateBusinessesInState name="a_business_state"
   type="oracle.panama.spatial.yp.YPBusiness"
   state="CA" country="US" businessName="Starbucks">
   <%= a_business_state.toString() %>
   <HR>
</loc:iterateBusinessesInState>

15.2.1.22 iterateBusinessesNearestTo

iterateBusinessesNearestToタグは、ポイントを中心に指定した半径(m単位)を持つ円形の地域内にある個々のビジネスを表します。

表15-22に、iterateBusinessesNearestToタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-22 iterateBusinessesNearestToタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: a_business_nearest

type

オブジェクトのタイプ。oracle.panama.spatial.yp.YPBusinessにする必要があります。

businessName

ビジネスの説明的な名前。例: Starbucks

×

categoryID

カテゴリに関連付けられた変数の名前(カテゴリが問合せに含まれる場合)。

×

keyword

キーワード(キーワードが問合せに含まれる場合)。

×

centerID

問合せの中心ポイントに関連付けられた変数の名前。

n

centerIDから最も近接しているビジネスの数。

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、Oracle本社の住所に関連付けられたポイントに最も近接している10軒のスターバックスを個別に表しています。ロケーションごとに、そのロケーションに関する情報とそれに続く横罫線が表示されます。

<loc:address
      name="HQ"
      type="oracle.panama.model.Location"
      businessName="HQ"
      firstLine="500 Oracle Parkway"
      city="Redwood City"
      state="CA"
      postalCode="94065"
      country="US"/>
<loc:iterateBusinessesNearestTo name="a_business_nearest"
   type="oracle.panama.spatial.yp.YPBusiness"
   businessName="Starbucks" centerID="HQ"  n="10">
   <%= a_business_nearest.toString() %>
   <HR>
</loc:iterateBusinessesNearestTo>

15.2.1.23 iterateByDistance

iterateByDistanceタグは、コレクション内の個々のポイントを、指定したポイントからの距離順にソートして表します。距離は、地球の曲率に従った直線で測定されます。

表15-23に、iterateByDistanceタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-23 iterateByDistanceタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: iter_dist

type

オブジェクトのタイプ。oracle.panama.model.Pointにする必要があります。

collection

距離順にソートされるポイントのコレクションに関連付けられた変数の名前。

centerID

距離を計算する中心ポイントとして使用するポイントの変数名(住所の場合など)。


次の例では、Oracle本社に最も近接している10軒のスターバックスのコレクションを作成しています。iterateByDistanceタグを使用して、個々のロケーションを本社からの距離順にソートして表し、各ロケーションに関する情報とそれに続く横罫線を表示しています。

<loc:address
      name="HQ"
      type="oracle.panama.model.Location"
      businessName="HQ"
      firstLine="500 Oracle Parkway"
      city="Redwood City"
      state="CA"
      postalCode="94065"
      country="US"/>
<loc:businesses
      name="starbucks"
      type="java.util.Collection"
      businessName="Starbucks"
      centerID="HQ"
      nearestN="10"/>
<loc:iterateByDistance name="iter_dist" type="oracle.panama.model.Point"
       collection="starbucks" centerID="HQ">
   <%= iter_dist.toString() %>
   <HR>
</loc:iterateByDistance>

15.2.1.24 iterateByDrivingDistance

iterateByDrivingDistanceタグは、コレクション内の個々のポイントを、ルーティング・プロバイダが決定した指定のポイントからの走行距離順にソートして表します。


注意:

走行距離順のソートは、ルーティング・プロバイダによって実行されます。したがって、このタグは走行距離順のソートをサポートするプロバイダのみと併用できます。

表15-24に、iterateByDrivingDistanceタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-24 iterateByDrivingDistanceタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: iter_drive

type

オブジェクトのタイプ。oracle.panama.model.Pointにする必要があります。

collection

走行距離順にソートされるポイントのコレクションに関連付けられた変数の名前。

centerID

走行距離を計算する中心ポイントとして使用するポイントの変数名(住所の場合など)。

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、Oracle本社に最も近接している10軒のスターバックスのコレクションを作成し、iterateByDrivingDistanceタグを使用して、ロケーションを本社からの走行距離順にソートし、各ロケーションに関する情報とそれに続く横罫線を表示しています。

<loc:address
      name="HQ"
      type="oracle.panama.model.Location"
      businessName="HQ"
      firstLine="500 Oracle Parkway"
      city="Redwood City"
      state="CA"
      postalCode="94065"
      country="US"/>
<loc:businesses
      name="starbucks"
      type="java.util.Collection"
      businessName="Starbucks"
      centerID="HQ"
      nearestN="10"/>
<loc:iterateByDrivingDistance name="iter_drive" type="oracle.panama.model.Point"
       collection="starbucks" centerID="HQ">
   <%= iter_drive.toString() %>
   <HR>
</loc:iterateByDrivingDistance>

15.2.1.25 iterateByName

iterateByNameタグは、コレクション内の個々のポイントをビジネス名順にソートして表します。

表15-25に、iterateByNameタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-25 iterateByNameタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: iter_name

type

オブジェクトのタイプ。oracle.panama.model.Pointにする必要があります。

collection

名前順にソートされるポイントのコレクションに関連付けられた変数の名前。


次の例では、以前に作成したコレクションbookstores内の個々のビジネスを、名前順にソートして表しています。ビジネスごとに、そのロケーションに関する情報とそれに続く横罫線が表示されます。

<loc:iterateByName name="iter_name" type="oracle.panama.model.Point"
       collection="bookstores">
   <%= iter_name.toString() %>
   <HR>
</loc:iterateByName>

15.2.1.26 iterateByRegionName

iterateByNameタグは、コレクション内の個々のポイントを、リージョン名順にソートして表します。リージョンは最初に国でソートされ、続いて州、都市、郵便番号でソートされます。

表15-26に、iterateByRegionNameタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-26 iterateByRegionNameタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: iter_reg_name

type

オブジェクトのタイプ。oracle.panama.model.Pointにする必要があります。

collection

名前順にソートされるポイントのコレクションに関連付けられた変数の名前。


次の例では、以前に作成したコレクションstarbucks内の個々のビジネスを、リージョン名順に(国、州、都市、郵便番号の順に)ソートして表しています。ビジネスごとに、そのロケーションに関する情報とそれに続く横罫線が表示されます。

<loc:iterateByRegionName name="iter_reg_name" type="oracle.panama.model.Point"
       collection="starbucks">
   <%= iter_reg_name.toString() %>
   <HR>
</loc:iterateByRegionName>

15.2.1.27 iterateCategoriesMatchingKeyword

iterateCategoriesMatchingKeywordタグでは、指定したキーワード値と一致するカテゴリのコレクションを作成し、各カテゴリを個別に表示します。

表15-27に、iterateCategoriesMatchingKeywordタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-27 iterateCategoriesMatchingKeywordタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: a_category

type

オブジェクトのタイプ。oracle.panama.spatial.yp.YPCategoryにする必要があります。

parentCategory

親カテゴリの指定を含むオブジェクトの名前(親オブジェクトは、あらかじめcategoryタグを使用して作成します)。

×

keyword

親カテゴリ名、またはparentCategoryが指定されていない場合はすべてのカテゴリ名の中で検索される語句。


次の例では、キーワードrestaurantと一致する個々のカテゴリを表しています。カテゴリごとに、完全修飾された名前とそれに続く横罫線が表示されます。

<loc:iterateCategoriesMatchingKeyword name="a_category"
   type="oracle.panama.spatial.yp.YPCategory"
   keyword="restaurant">
   <%= a_category.getFullyQualifiedName() %>
   <HR>
</loc:iterateCategoriesMatchingKeyword>

15.2.1.28 iterateChildCategories

iterateChildCategoriesタグでは、個別に表示される直下のサブカテゴリのコレクションを指定します。

表15-28に、iterateChildCategoriesタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-28 iterateChildCategoriesタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: hardware_stores

type

オブジェクトのタイプ。oracle.panama.spatial.yp.YPCategoryにする必要があります。

parentCategory

親カテゴリの指定を含むオブジェクトの名前(親オブジェクトは、あらかじめcategoryタグを使用して作成します)。

×


次の例では、変数restaurantに関連付けられた親カテゴリの、すべての子カテゴリを個別に表しています。子カテゴリごとに、完全修飾された名前とそれに続く横罫線が表示されます。

<loc:iterateChildCategories name="a_child_category"
   type="oracle.panama.spatial.yp.YPCategory"
   parentCategory="restaurant">
   <%= a_child_category.getFullyQualifiedName() %>
   <HR>
</loc:iterateChildCategories>

15.2.1.29 iterateGeocodes

iterateGeocodesタグでは、個別に表示されるジオコーディングされた住所のコレクションを戻します。

表15-29に、iterateGeocodesタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-29 iterateGeocodesタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: main_bus

type

オブジェクトのタイプ。oracle.panama.model.Locationにする必要があります。

businessName

指定した住所にあるビジネスまたは他のエンティティの説明的な名前。例: Mike's Hardware

×

houseNumber

住所の番地番号。

×

streetName

番地。

secondLine

番地の2行目。

×

intersection

houseNumberが指定されていない場合は、交差する番地。

×

city

都市名。

state

2文字の州コード(US)または郡コード(カナダ)。

postalCode

郵便番号(主要な部分)。例: 01742

postalCodeExt

4桁の追加番号など、郵便番号の拡張部分。

×

country

国名または国コード。

provider

優先順位がある場合は、リクエストに対して最初に選択されるサービス・プロバイダの名前。

×


次のiterateGeocodesタグの例は、New Hampshire州Nashuaで郵便番号03060のDaniel Webster Highwayにジオコーディングされた各住所を表します。ジオコーディングされた住所ごとに、横罫線および1行のテキストが表示され、改行後にプロバイダからの住所情報が表示されます。

<loc:iterateGeocodes
  name = "a_business"
  type = "oracle.panama.model.Location"
  streetName = "Daniel Webster Hwy"
  city = "Nashua"
  state = "NH"
  postalCode = "03060"
  country = "US">
      <HR>
      Another business in our community:
      <br>
<%= a_business.toString() %>
</loc:iterateGeocodes>

15.2.1.30 iterateLocationMarks

iterateLocationMarksタグは、Oracle Application Server Wirelessユーザーの個々のロケーション・マークを表します。

表15-30に、iterateLocationMarksタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-30 iterateLocationMarksタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: iter_marks

type

オブジェクトのタイプ。oracle.panama.model.LocationMarkにする必要があります。

userName

ロケーション・マークの表示対象であるOracle Application Server Wirelessのユーザーの名前。デフォルトは現行のユーザーです。

×


次の例では、変数iter_marksに関連付けられたオブジェクトとして、ユーザーMikeの各ロケーション・マークを表し、オブジェクトごとに、そのオブジェクトの情報とそれに続く横罫線を表示しています。

<loc:iterateLocationMarks name="iter_marks"
       type="oracle.panama.model.LocationMark"
       userName="Mike" >
   <%= iter_marks.toString() %>
   <HR>
</loc:iterateLocationMarks>

15.2.1.31 iterateManeuvers

iterateManeuversタグでは、運転経路のコレクションを作成し、経路を個別に表示します。

表15-31に、iterateManeuversタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-31 iterateManeuversタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: eManeuver

type

オブジェクトのタイプ。oracle.panama.spatial.jsptags.beans.Maneuverにする必要があります。

routeID

運転経路を表すルートの名前。


次の例では、2つの住所(ある人のオフィスと自宅)間にルートmyRouteを作成して、ルートのマップとそれに続く横罫線を表示し、(iterateManeuversタグとgetMapおよびgetNarrativeファンクション・コールを使用して)各運転経路とそれに続く横罫線を表しています。また、各運転経路の説明はリンクであり、ユーザーがクリックするとその経路マップを表示できます。

<loc:route name="myRoute" type="oracle.panama.spatial.jsptags.beans.Route" xres="800" yres="600">
   <loc:address
        name="office"
        type="oracle.panama.model.Location"
        businessName="My office"
        firstLine="1 Oracle Dr"
        city="Nashua"
        state="NH"
        postalCode="03062"
        country="US"/>
   <loc:address
        name="home"
        type="oracle.panama.model.Location"
        businessName="My home"
        firstLine="2 Royal Crest Dr"
        city="Nashua"
        state="NH"
        postalCode="03060"
        country="US"/>
</loc:route>

<img src="<%= myRoute.getMap() %>">
<HR>

<loc:iterateManeuvers name="aManeuver" type="oracle.panama.spatial.jsptags.beans.Maneuver" routeID="myRoute">
      <a href="<%= aManeuver.getMap() %>">
        <%= aManeuver.getNarrative() %>
      </a>
      <HR>
</loc:iterateManeuvers>

15.2.1.32 iterateReverseGeocodes

iterateReverseGeocodesタグは、個別に表示される逆ジオコーディングされた住所(指定したポイントにプロバイダによって関連付けられた住所)のコレクションを戻します。

表15-32に、iterateReverseGeocodesタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-32 iterateReverseGeocodesタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: hardware_1

type

オブジェクトのタイプ。oracle.panama.model.Locationにする必要があります。

businessName

指定した住所にあるビジネスまたは他のエンティティの説明的な名前。例: Mike's Hardware

×

firstLine

番地。

×

city

都市名。

×

state

2文字の州コード(US)または郡コード(カナダ)。

×

postalCode

郵便番号。

×

country

国名。

×

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次のiterateReverseGeocodesタグの例は、指定したポイントにプロバイダによって関連付けられ、ジオコーディングされた各住所を表します。ジオコーディングされた住所ごとに、プロバイダからの住所情報とそれに続く横罫線が表示されます。

<loc:iterateReverseGeocodes
  name = "iter_rev"
  type = "oracle.panama.model.Location"
  lon = "-71.4424"
  lat = "42.712"
  label = "You Are Here" >
<%= iter_rev.toString() %>
<HR>
</loc:iterateReverseGeocodes>

15.2.1.33 listAllMembers

listAllMembersタグでは、指定したモバイル・コミュニティのすべてのメンバーのフォーマットされていないリストを作成します。

表15-33に、listAllMembersタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-33 listAllMembersタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: list_all_mem

type

オブジェクトのタイプ。java.util.Enumertionにする必要があります。

communityID

メンバーをリストするコミュニティに関連付けられた変数の名前。


次の例では、変数comm_privateに関連付けられたコミュニティのすべてのメンバーのフォーマットされていないリストを作成し、作成されるjava.util.Enumerationオブジェクトを表示しています。

<loc:listAllMembers
      name="list_all_mem"
      type="java.util.Enumeration"
      communityID="comm_private" />
<%= list_all_mem.toString() %>

15.2.1.34 listBusinessesInCity

listBusinessesInCityタグでは、指定した都市内のビジネスのフォーマットされていないリストを作成します。

表15-34に、listBusinessesInCityタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-34 listBusinessesInCityタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: all_business_city

type

オブジェクトのタイプ。java.util.Listにする必要があります。

businessName

ビジネスの説明的な名前。例: Starbucks

×

categoryID

カテゴリに関連付けられた変数の名前(カテゴリが問合せに含まれる場合)。

×

keyword

キーワード(キーワードが問合せに含まれる場合)。

×

city

都市名。

state

2文字の州コード(US)または郡コード(カナダ)。

country

国名。

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、California州San FranciscoにあるすべてのBorders書店のフォーマットされていないリストを作成し、そのリストを表示しています。

<loc:listBusinessesInCity name="all_businesses_city"
   type="java.util.List"
   city="San Francisco" state="CA" country="US" businessName="Borders">
</loc:listBusinessesInCity>
<%= all_businesses_city.toString() %>

15.2.1.35 listBusinessesInCorridor

listBusinessesInCorridorタグでは、コリドー内のビジネスのフォーマットされていないリストを作成します。コリドーとは、ルートの作成時に交差点や出口などを表すポイントのコレクションです。

表15-35に、listBusinessesInCorridorタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-35 listBusinessesInCorridorタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: hardware_1

type

オブジェクトのタイプ。oracle.panama.model.Locationにする必要があります。

businessName

指定した住所にあるビジネスまたは他のエンティティの説明的な名前。例: Mike's Hardware

×

categoryID

カテゴリに関連付けられた変数の名前(カテゴリが問合せに含まれる場合)。

×

keyword

キーワード(キーワードが問合せに含まれる場合)。

×

corridorID

コリドーに関連付けられた変数の名前。

radiusInMeters

コリドー内の各ポイントを中心としたm単位の半径。

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、オフィスと他の場所の間にルートを作成して、そのルートに関連付けられたコリドー内のすべてのポイントから3000m以内のスターバックスのフォーマットされていないリストを作成し、そのリストを表示しています。

<loc:route name="myRoute" type="oracle.panama.spatial.jsptags.beans.Route" xres="800" yres="600" requestGeom="true">
    <loc:address
        name="office"
        type="oracle.panama.model.Location"
        businessName="Some office"
        firstLine="500 Oracle Parkway"
        city="Redwood City"
        state="CA"
        postalCode="94065"
        country="US"/>
    <loc:address
        name="ucsb"
        type="oracle.panama.model.Location"
        businessName="UCSB"
        firstLine="6750 El Colegio Rd"
        city="Goleta"
        state="CA"
        postalCode="93117"
        country="US"/>
</loc:route>

<loc:geometry name="myRouteGeom" type="java.util.List" route="myRoute"/>

<loc:listBusinessesInCorridor name="all_businesses_corridor"
   type="java.util.List"
   businessName="Starbucks" corridorID="myRouteGeom" radiusInMeters="3000">
</loc:listBusinessesInCorridor>
<%= all_businesses_corridor.toString() %>

15.2.1.36 listBusinessesInPostalCode

listBusinessesInPostalCodeタグでは、指定した郵便番号に該当するビジネスのフォーマットされていないリストを作成します。

表15-36に、listBusinessesInPostalCodeタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-36 listBusinessesInPostalCodeタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: all_business_pcode

type

オブジェクトのタイプ。java.util.Listにする必要があります。

businessName

ビジネスの説明的な名前。例: Starbucks

×

categoryID

カテゴリに関連付けられた変数の名前(カテゴリが問合せに含まれる場合)。

×

keyword

キーワード(キーワードが問合せに含まれる場合)。

×

postalCode

郵便番号。

country

国名。

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、アメリカ合衆国内の郵便番号93117に該当するすべてのスターバックスのフォーマットされていないリストを作成し、そのリストを表示しています。

<loc:listBusinessesInPostalCode name="all_businesses_pcode"
   type="java.util.List"
   postalCode="93117" country="US" businessName="Starbucks">
</loc:listBusinessesInPostalCode>
<%= all_businesses_pcode.toString() %>

15.2.1.37 listBusinessesInRadius

listBusinessesInRadiusタグでは、ポイントを中心に指定した半径(m単位)を持つ円形の地域内にあるビジネスのフォーマットされていないリストを作成します。

表15-37に、listBusinessesInRadiusタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-37 listBusinessesInRadiusタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: all_business_radius

type

オブジェクトのタイプ。java.util.Listにする必要があります。

businessName

ビジネスの説明的な名前。例: Starbucks

×

categoryID

カテゴリに関連付けられた変数の名前(カテゴリが問合せに含まれる場合)。

×

keyword

キーワード(キーワードが問合せに含まれる場合)。

×

centerID

問合せの中心ポイントに関連付けられた変数の名前。

radiusInMeters

centerIDを中心とした円の半径を表す数値(m単位)。

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、Oracle本社の住所に関連付けられたポイントから5000m(5Km)以内のすべてのスターバックスのフォーマットされていないリストを作成し、そのリストを表示しています。

<loc:address
      name="HQ"
      type="oracle.panama.model.Location"
      businessName="HQ"
      firstLine="500 Oracle Parkway"
      city="Redwood City"
      state="CA"
      postalCode="94065"
      country="US"/>
<loc:listBusinessesInRadius name="all_businesses_radius"
   type="java.util.List"
   businessName="Starbucks" centerID="HQ"  radiusInMeters="5000">
</loc:listBusinessesInRadius>
<%= all_businesses_radius.toString() %>

15.2.1.38 listBusinessesInState

listBusinessesInStateタグでは、指定した州内のビジネスのフォーマットされていないリストを作成します。

表15-38に、listBusinessesInStateタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-38 listBusinessesInStateタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: all_business_state

type

オブジェクトのタイプ。java.util.Listにする必要があります。

businessName

ビジネスの説明的な名前。例: Starbucks

×

categoryID

カテゴリに関連付けられた変数の名前(カテゴリが問合せに含まれる場合)。

×

keyword

キーワード(キーワードが問合せに含まれる場合)。

×

state

2文字の州コード(US)または郡コード(カナダ)。

country

国名。

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、California州にあるすべてのスターバックスのフォーマットされていないリストを作成し、そのリストを表示しています。

<loc:listBusinessesInState name="all_businesses_state"
   type="java.util.List"
   state="CA" country="US" businessName="Borders">
</loc:listBusinessesInState>
<%= all_businesses_state.toString() %>

15.2.1.39 listBusinessesNearestTo

listBusinessesNearestToタグでは、ポイントを中心に指定した半径(m単位)を持つ円形の地域内にあるビジネスのフォーマットされていないリストを作成します。

表15-39に、listBusinessesNearestToタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-39 listBusinessesNearestToタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: all_business_nearest

type

オブジェクトのタイプ。java.util.Listにする必要があります。

businessName

ビジネスの説明的な名前。例: Starbucks

×

categoryID

カテゴリに関連付けられた変数の名前(カテゴリが問合せに含まれる場合)。

×

keyword

キーワード(キーワードが問合せに含まれる場合)。

×

centerID

問合せの中心ポイントに関連付けられた変数の名前。

n

centerIDから最も近接しているビジネスの数。

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、Oracle本社の住所に関連付けられたポイントに最も近接している10軒のスターバックスのフォーマットされていないリストを作成し、そのリストを表示しています。

<loc:address
      name="HQ"
      type="oracle.panama.model.Location"
      businessName="HQ"
      firstLine="500 Oracle Parkway"
      city="Redwood City"
      state="CA"
      postalCode="94065"
      country="US"/>
<loc:listBusinessesNearestTo name="all_businesses_nearest"
   type="java.util.List"
   businessName="Starbucks" centerID="HQ"  n="10">
</loc:listBusinessesNearestTo>
<%= all_businesses_nearest.toString() %>

15.2.1.40 listByDistance

listByDistanceタグでは、コレクション内のポイントを指定したポイントからの距離順にソートしたフォーマットされていないリストを作成します。距離は、地球の曲率に従った直線で測定されます。

表15-40に、listByDistanceタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-40 listByDistanceタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: list_dist

type

オブジェクトのタイプ。java.util.Listにする必要があります。

collection

距離順にソートされるポイントのコレクションに関連付けられた変数の名前。

centerID

距離を計算する中心ポイントとして使用するポイントの変数名(住所の場合など)。


次の例では、Oracle本社に最も近接している10軒のスターバックスのコレクションを作成し、listByDistanceタグを使用して、ロケーションを本社からの距離順にソートしたフォーマットされていないリストを作成し、そのリストを表示しています。

<loc:address
      name="HQ"
      type="oracle.panama.model.Location"
      businessName="HQ"
      firstLine="500 Oracle Parkway"
      city="Redwood City"
      state="CA"
      postalCode="94065"
      country="US"/>
<loc:businesses
      name="starbucks"
      type="java.util.Collection"
      businessName="Starbucks"
      centerID="HQ"
      nearestN="10"/>
<loc:listByDistance name="list_dist" type="java.util.List"
   collection="starbucks" centerID="HQ">
</loc:listByDistance>
<%= list_dist.toString() %>

15.2.1.41 listByDrivingDistance

listByDrivingDistanceタグでは、コレクション内のポイントを、ルーティング・プロバイダが決定した指定のポイントからの走行距離順にソートした、フォーマットされていないリストを作成します。


注意:

走行距離順のソートは、ルーティング・プロバイダによって実行されます。したがって、このタグは走行距離順のソートをサポートするプロバイダのみと併用できます。

表15-41に、listByDrivingDistanceタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-41 listByDrivingDistanceタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: hardware_1

type

オブジェクトのタイプ。java.util.Listにする必要があります。

collection

走行距離順にソートされるポイントのコレクションに関連付けられた変数の名前。

centerID

走行距離を計算する中心ポイントとして使用するポイントの変数名(住所の場合など)。

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、Oracle本社に最も近接している10軒のスターバックスのコレクションを作成し、listByDrivingDistanceタグを使用して、ロケーションを本社からの走行距離順にソートしたフォーマットされていないリストを作成し、そのリストを表示しています。

<loc:address
      name="HQ"
      type="oracle.panama.model.Location"
      businessName="HQ"
      firstLine="500 Oracle Parkway"
      city="Redwood City"
      state="CA"
      postalCode="94065"
      country="US"/>
<loc:businesses
      name="starbucks"
      type="java.util.Collection"
      businessName="Starbucks"
      centerID="HQ"
      nearestN="10"/>
<loc:listByDrivingDistance name="list_drive" type="java.util.List"
   collection="starbucks" centerID="HQ">
</loc:listByDrivingDistance>
<%= list_drive.toString() %>

15.2.1.42 listByName

listByNameタグでは、コレクション内のポイントをビジネス名順にソートしたフォーマットされていないリストを作成します。

表15-42に、listByNameタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-42 listByNameタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: iter_name

type

オブジェクトのタイプ。java.util.Listにする必要があります。

collection

名前順にソートされるポイントのコレクションに関連付けられた変数の名前。


次の例では、(以前に作成した)コレクションbookstores内のビジネスを名前順にソートしたフォーマットされていないリストを作成し、そのリストを表示しています。

<loc:listByName name="list_name" type="java.util.List"
   collection="bookstores">
</loc:listByName>
<%= list_name.toString() %>

15.2.1.43 listByRegionName

listByRegionNameタグでは、コレクション内のポイントをリージョン名順にソートしたフォーマットされていないリストを作成します。リージョンは最初に国でソートされ、続いて州、都市、郵便番号でソートされます。

表15-43に、listByRegionNameタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-43 listByRegionNameタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: list_reg_name

type

オブジェクトのタイプ。oracle.panama.model.Pointにする必要があります。

collection

名前順にソートされるポイントのコレクションに関連付けられた変数の名前。


次の例では、(以前に作成した)コレクションstarbucks内のビジネスをリージョン名順に(国、州、都市、郵便番号の順に)ソートしたフォーマットされていないリストを作成し、そのリストを表示しています。

<loc:listByRegionName name="list_reg_name" type="java.util.List"
   collection="starbucks">
</loc:listByRegionName>
<%= list_reg_name.toString() %>

15.2.1.44 listCategoriesMatchingKeyword

listCategoriesMatchingKeywordタグでは、指定したキーワードと一致するビジネス・ディレクトリ・カテゴリのフォーマットされていないリストを作成します。

表15-44に、listCategoriesMatchingKeywordタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-44 listCategoriesMatchingKeywordタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: all_category_key

type

オブジェクトのタイプ。java.util.Listにする必要があります。

parentCategory

親カテゴリの指定を含むオブジェクトの名前(親オブジェクトは、あらかじめcategoryタグを使用して作成します)。

×

keyword

親カテゴリ名、またはparentCategoryが指定されていない場合はすべてのカテゴリ名の中で検索される語句。


次の例では、キーワードrestaurantに一致するカテゴリのフォーマットされていないリストを作成し、そのリストを表示しています。

<loc:listCategoriesMatchingKeyword name="all_categories_key"
   type="java.util.List"
   keyword="restaurant">
</loc:listCategoriesMatchingKeyword>
<%= all_categories_key.toString() %>

15.2.1.45 listChildCategories

listChildCategoriesタグでは、直下のサブカテゴリのフォーマットされていないリストを作成します。

表15-45に、listChildCategoriesタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-45 listChildCategoriesタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: all_category_child

type

オブジェクトのタイプ。java.util.Listにする必要があります。

parentCategory

親カテゴリの指定を含むオブジェクトの名前(親オブジェクトは、あらかじめcategoryタグを使用して作成します)。

×


次の例では、変数restaurantに関連付けられた親カテゴリのすべての子カテゴリのフォーマットされていないリストを作成し、そのリストを表示しています。

<loc:listChildCategories name="all_categories_child"
   type="java.util.List"
   parentCategory="restaurant">
</loc:listChildCategories>
<%= all_categories_child.toString() %>

15.2.1.46 listCreatedCommunities

listCreatedCommunitiesタグでは、指定したOracle Application Serverのモバイル使用が所有しているすべてのモバイル・コミュニティ(プライベート、共有およびシステム)のフォーマットされていないリストを作成します。コミュニティのタイプを含むモバイル・コミュニティの説明は、15.3.2.6項「モバイル・コミュニティ」を参照してください。

表15-46に、listCreatedCommunitiesタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-46 listCreatedCommunitiesタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: list_cr_comm

type

オブジェクトのタイプ。java.util.Listにする必要があります。

userName

操作をリクエストするOracle Application Server Wirelessユーザーの名前。デフォルトは現行のユーザーです。


次の例では、ユーザーMikeのリクエストによって、すべてのモバイル・コミュニティのフォーマットされていないリストを作成し、そのリストを表示しています。

<loc:listCreatedCommunities
      name="list_cr_comm"
      type="java.util.List"
      userName="Mike" />
<%= list_cr_comm.toString() %>

15.2.1.47 listCreatedPrivateCommunities

listCreatedPrivateCommunitiesタグでは、指定したOracle Application Serverのモバイル使用が所有しているすべてのモバイル・プライベート・コミュニティのフォーマットされていないリストを作成します。コミュニティのタイプを含むモバイル・コミュニティの説明は、15.3.2.6項「モバイル・コミュニティ」を参照してください。

表15-47に、listCreatedPrivateCommunitiesタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-47 listCreatedPrivateCommunitiesタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: list_cr_priv_comm

type

オブジェクトのタイプ。java.util.Listにする必要があります。

userName

操作をリクエストするOracle Application Server Wirelessユーザーの名前。デフォルトは現行のユーザーです。


次の例では、ユーザーMikeのリクエストによって、すべてのモバイル・プライベート・コミュニティのフォーマットされていないリストを作成し、そのリストを表示しています。

<loc:listCreatedPrivateCommunities
      name="list_cr_priv_comm"
      type="java.util.List"
      userName="Mike" />
<%= list_cr_priv_comm.toString() %>

15.2.1.48 listCreatedSharedCommunities

listCreatedSharedCommunitiesタグでは、指定したOracle Application Serverのモバイル使用が所有しているすべてのモバイル共有コミュニティのフォーマットされていないリストを作成します。コミュニティのタイプを含むモバイル・コミュニティの説明は、15.3.2.6項「モバイル・コミュニティ」を参照してください。

表15-48に、listCreatedSharedCommunitiesタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-48 listCreatedSharedCommunitiesタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: list_cr_shar_comm

type

オブジェクトのタイプ。java.util.Listにする必要があります。

userName

操作をリクエストするOracle Application Server Wirelessユーザーの名前。デフォルトは現行のユーザーです。


次の例では、ユーザーMikeのリクエストによって、すべてのモバイル共有コミュニティのフォーマットされていないリストを作成し、そのリストを表示しています。

<loc:listCreatedSharedCommunities
      name="list_cr_shar_comm"
      type="java.util.List"
      userName="Mike" />
<%= list_cr_shar_comm.toString() %>

15.2.1.49 listCreatedSystemCommunities

listCreatedSystemCommunitiesタグでは、指定したOracle Application Serverのモバイル使用が所有しているすべてのモバイル・システム・コミュニティのフォーマットされていないリストを作成します。コミュニティのタイプを含むモバイル・コミュニティの説明は、15.3.2.6項「モバイル・コミュニティ」を参照してください。

表15-49に、listCreatedSystemCommunitiesタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-49 listCreatedSystemCommunitiesタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: list_cr_sys_comm

type

オブジェクトのタイプ。java.util.Listにする必要があります。

userName

操作をリクエストするOracle Application Server Wirelessユーザーの名前。デフォルトは現行のユーザーです。


次の例では、ユーザーMikeのリクエストによって、すべてのモバイル・システム・コミュニティのフォーマットされていないリストを作成し、そのリストを表示しています。

<loc:listCreatedSystemCommunities
      name="list_cr_sys_comm"
      type="java.util.List"
      userName="Mike" />
<%= list_cr_sys_comm.toString() %>

15.2.1.50 listGeocodes

listGeocodesタグでは、ジオコーディングされた住所のフォーマットされていないリストを作成します。

表15-50に、listGeocodesタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-50 listGeocodesタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: hardware1

type

オブジェクトのタイプ。java.util.Listにする必要があります。

businessName

指定した住所にあるビジネスまたは他のエンティティの説明的な名前。例: Mike's Hardware

×

houseNumber

住所の番地番号。

×

streetName

番地。

secondLine

番地の2行目。

×

intersection

houseNumberが指定されていない場合は、交差する番地。

×

city

都市名。

state

2文字の州コード(US)または郡コード(カナダ)。

postalCode

郵便番号(主要な部分)。例: 01742

postalCodeExt

4桁の追加番号など、郵便番号の拡張部分。

×

country

国名または国コード。

provider

優先順位がある場合は、リクエストに対して最初に選択されるサービス・プロバイダの名前。

×


次のlistGeocodesタグの例は、New Hampshire州Nashuaで郵便番号03060のDaniel Webster Highwayにジオコーディングされたすべての住所を表します。

<loc:listGeocodes
  name = "all_businesses"
  type = "java.util.List"
  streetName = "Daniel Webster Hwy"
  city = "Nashua"
  state = "NH"
  postalCode = "03060"
  country = "US" />

15.2.1.51 listLocationMarks

listLocationMarksタグでは、OracleAS Wirelessユーザーのロケーション・マークのフォーマットされていないリストを作成します。

表15-51に、listLocationMarksタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-51 listLocationMarksタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: list_marks

type

オブジェクトのタイプ。oracle.panama.model.LocationMarkにする必要があります。

userName

ロケーション・マークのリスト対象であるOracle Application Server Wirelessのユーザーの名前。デフォルトは現行のユーザーです。

×


次の例では、変数list_marksに関連付けられたオブジェクトとして、ユーザーMikeのロケーション・マークのフォーマットされていないリストを作成し、そのオブジェクトの情報を表示しています。

<loc:listLocationMarks name="list_marks"
        type="java.util.List"
       userName="Mike"  />
<%= list_marks.toString() %>

15.2.1.52 listManeuvers

listManeuversタグでは、運転経路のフォーマットされていないリストを作成します。

表15-52に、listManeuversタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-52 listManeuversタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: hardware_1

type

オブジェクトのタイプ。java.util.Listにする必要があります。

businessName

指定した住所にあるビジネスまたは他のエンティティの説明的な名前。例: Mike's Hardware

×

firstLine

番地。

×

city

都市名。

×

state

2文字の州コード(US)または郡コード(カナダ)。

×

postalCode

郵便番号。

×

country

国名。

×


次の例では、2つの住所(ある人のオフィスと自宅)間にルートmyRouteを作成して、ルートのマップとそれに続く横罫線を表示し、そのルートのすべての運転経路のフォーマットされていないリストを表しています。

<loc:route name="myRoute" type="oracle.panama.spatial.jsptags.beans.Route" xres="800" yres="600">
   <loc:address
        name="office"
        type="oracle.panama.model.Location"
        businessName="My office"
        firstLine="1 Oracle Dr"
        city="Nashua"
        state="NH"
        postalCode="03062"
        country="US"/>
   <loc:address
        name="home"
        type="oracle.panama.model.Location"
        businessName="My home"
        firstLine="2 Royal Crest Dr"
        city="Nashua"
        state="NH"
        postalCode="03060"
        country="US"/>
</loc:route>
<loc:listManeuvers name="all_maneuvers" type="java.util.List" routeID="myRoute" />
<%= all_maneuvers.toString() %>

15.2.1.53 listReverseGeocodes

listReverseGeocodesタグでは、逆ジオコーディングされた住所(指定したポイントにプロバイダによって関連付けられた住所)のフォーマットされていないリストを作成します。

表15-53に、listReverseGeocodesタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-53 listReverseGeocodesタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: hardware_1

type

オブジェクトのタイプ。java.util.Listにする必要があります。

businessName

指定した住所にあるビジネスまたは他のエンティティの説明的な名前。例: Mike's Hardware

×

firstLine

番地。

×

city

都市名。

×

state

2文字の州コード(US)または郡コード(カナダ)。

×

postalCode

郵便番号。

×

country

国名。

×

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次のlistReverseGeocodesタグの例は、指定したポイントにプロバイダによって関連付けられた住所を表します。

<loc:listReverseGeocodes
  name = "list_rev"
  type = "java.util.List"
  lon = "-71.4424"
  lat = "42.712"
  label = "You Are Here" />

<%= list_rev.toString() %>

15.2.1.54 map

mapタグでは、指定の解像度で次のいずれかを示すマップを指定します。

  • 1つ以上のポイント

  • 1つのルート

  • 1つの運転経路

表15-54に、mapタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-54 mapタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: myMap

type

オブジェクトのタイプ。oracle.panama.spatial.jsptags.beans.Mapにする必要があります。

points

作成するマップに含めるポイントのコレクションの名前。

×

route

作成するマップに含めるルートの名前。

×

maneuver

作成するマップに含める経路の名前。

×

xres

画面表示単位によるマップの幅。

yres

画面表示単位によるマップの高さ。

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次のmapタグの例では、幅400ピクセル、高さ300ピクセルのマップNEDCSmallを作成しています。マップの中心ポイントはmapタグ内のaddressタグで定義した住所です。

<loc:map name="NEDCSmall" type="oracle.panama.spatial.jsptags.beans.Map"
       xres="400" yres="300">
   <loc:address
     name="NEDC"
     type="oracle.panama.model.Location"
     businessName="NEDC"
     firstLine="1 Oracle Dr"
     city="Nashua"
     state="NH"
     postalCode="03062"
     country="US"/>
</loc:map>

15.2.1.55 mobilePos

mobilePosタグでは、モバイル・ユーザーに関するポジショニング情報を備えたオブジェクトを作成します。

表15-55に、mobilePosタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-55 mobilePosタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: position

type

オブジェクトのタイプ。oracle.panama.model.Pointにする必要があります。

userName

ポジショニング情報のリクエスト対象であるOracle Application Server Wirelessのユーザーの名前。デフォルトは現行のユーザーです。

×

requestingUser

ポジショニング情報のリクエスト対象であるOracle Application Server Wirelessのユーザーの名前。デフォルトは現行のユーザーです。リクエスト側ユーザーが、userNameに関するポジショニング情報の取出しを許可されていない場合は、リクエストに失敗します。

×

failoverToDefaultLocationMark

TRUE(デフォルト)では、ユーザーがポジショニングできない場合、およびrequestingUserがポジショニング情報の取出しを許可されていない場合に、userNameのデフォルト・ロケーション・マークが使用されます。FALSEでは、ユーザーがポジショニングできない場合、リクエストに失敗します。

×


次の例では、ユーザーMikeに関するポジショニング情報を備えたオブジェクトを作成しています。デフォルトでは、現在位置が取得できない場合、そのユーザーのデフォルト・ロケーション・マークが使用されます。また、この例は、ポジショニング情報も表示しています。

<loc:mobilePos
      name="position"
      type="oracle.panama.model.Point"
      userName="Mike"  />
<%= position.toString() %>

15.2.1.56 point

pointタグでは、WGS 84座標系(Oracle Spatial SRID値8307)を使用して、ポイントの経度と緯度の値を指定します。

表15-56に、pointタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-56 pointタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: my_pt

type

オブジェクトのタイプ。oracle.panama.model.Locationにする必要があります。

lon

ポイントの経度の値(WGS 84座標系)。例: -75.3

lat

ポイントの緯度の値(WGS 84座標系)。例: 45.71


次のpointタグの例では、西経75.3度、北緯45.71度にポイントを指定します。

<loc:point
  lon = "-73.5"
  lat = "45.71"  />

15.2.1.57 removeAllMembers

removeAllMembersタグでは、モバイル・コミュニティからすべてのメンバーを削除します。(このタグは、コミュニティを削除しません。コミュニティを削除するには、deleteCommunityタグを使用します。)モバイル・コミュニティの説明は、15.3.2.6項「モバイル・コミュニティ」を参照してください。

表15-57に、removeAllMembersタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-57 removeAllMembersタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: remove_all_members

type

オブジェクトのタイプ。Booleanである必要があります(操作に成功するとTRUE、失敗するとFALSE)。

userName

操作をリクエストするOracle Application Server Wirelessユーザーの名前。デフォルトは現行のユーザーです。

×

communityID

すべてのメンバーを削除するコミュニティに関連付けられた変数の名前。例: comm_private


次の例では、ユーザーMikeのリクエストによって、変数comm_privateに関連付けられたモバイル・コミュニティからすべてのメンバーを削除しています。また、このコミュニティのメンバーのjava.util.Enumerationオブジェクトを作成しています。

<loc:removeAllMembers
      name="remove_all_members"
      type="Boolean"
      userName="Mike"
      communityID="comm_private"  />
<loc:listAllMembers
      name="list_all_mem3"
      type="java.util.Enumeration"
      communityID="comm_private" />
<%= list_all_mem3.toString() %>

15.2.1.58 removeMembers

removeMembersタグでは、モバイル・コミュニティから1人以上のメンバーを削除します。モバイル・コミュニティの説明は、15.3.2.6項「モバイル・コミュニティ」を参照してください。

表15-58に、removeMembersタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-58 removeMembersタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: remove_members

type

オブジェクトのタイプ。Booleanである必要があります(操作に成功するとTRUE、失敗するとFALSE)。

userName

操作をリクエストするOracle Application Server Wirelessユーザーの名前。デフォルトは現行のユーザーです。

×

communityID

メンバーを削除するコミュニティに関連付けられた変数の名前。例: comm_private

communityMembers

コミュニティから削除されるOracle Application Server Wirelessユーザーがスペースで区切られたリスト。

×


次の例では、ユーザーMikeのリクエストによって、変数comm_privateに関連付けられたモバイル・コミュニティからユーザーOscarおよびMariaを削除しています。また、このコミュニティのメンバーのjava.util.Enumerationオブジェクトを作成しています。

<loc:removeMembers
      name="remove_members"
      type="Boolean"
      userName="Mike"
      communityID="comm_private"
      communityMembers="Oscar Maria" />
<loc:listAllMembers
      name="list_all_mem2"
      type="java.util.Enumeration"
      communityID="comm_private" />
<%= list_all_mem2.toString() %>

15.2.1.59 route

routeタグでは、指定のマップ解像度を持つルートを指定します。ルートには、経路、概観マップおよび経路マップが含まれます。

表15-59に、routeタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-59 routeタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: myRoute

type

オブジェクトのタイプ。oracle.panama.spatial.jsptags.beans.Routeにする必要があります。

xres

表示されるルートの幅を示す画面表示単位の値。

yres

表示されるルートの高さを示す画面表示単位の値。

requestGeom

TRUEでは、ルートのジオメトリがプロバイダによって作成および提供されます(たとえば、geometryタグとともに使用します)。FALSE(デフォルト)では、ルートのジオメトリは作成されません。

×

requestMap

TRUE(デフォルト)では、ルート・マップがプロバイダによって作成および提供されますが、そのマップは実際には表示されません。(マップを表示するには、mapタグを使用します。)FALSEでは、ルート・マップは作成されません。プロバイダによっては、requestMapの設定に関係なく常にマップを提供する場合があることに注意してください。

×

provider

優先順位がある場合は、リクエストに対して最初に選択されるプロバイダの名前。

×


次の例では、2つの住所(ある人のオフィスと自宅)間にルートmyRouteを作成して、ルートのマップとそれに続く横罫線を表示し、(iterateManeuversタグとgetMapおよびgetNarrativeファンクション・コールを使用して)各運転経路とそれに続く横罫線を表しています。また、各運転経路の説明はリンクであり、ユーザーがクリックするとその経路マップを表示できます。

<loc:route name="myRoute" type="oracle.panama.spatial.jsptags.beans.Route" xres="800" yres="600">
   <loc:address
        name="office"
        type="oracle.panama.model.Location"
        businessName="My office"
        firstLine="1 Oracle Dr"
        city="Nashua"
        state="NH"
        postalCode="03062"
        country="US"/>
   <loc:address
        name="home"
        type="oracle.panama.model.Location"
        businessName="My home"
        firstLine="2 Royal Crest Dr"
        city="Nashua"
        state="NH"
        postalCode="03060"
        country="US"/>
</loc:route>

<img src="<%= myRoute.getMap() %>">
<HR>

<loc:iterateManeuvers name="aManeuver" type="oracle.panama.spatial.jsptags.beans.Maneuver" routeID="myRoute">
      <a href="<%= aManeuver.getMap() %>">
        <%= aManeuver.getNarrative() %>
      </a>
      <HR>
</loc:iterateManeuvers>

15.2.1.60 setCommunityName

setCommunityNameタグでは、ジオコーディングするか、マップに配置するか、ルートの始点住所または終点住所として使用するか、ビジネス・ディレクトリ問合せの中心として使用する住所を指定します。

表15-60に、setCommunityNameタグのパラメータを示します。(この表の内容の説明は、15.2.1項「Java Server Pages(JSP)ファイルの作成」を参照。)

表15-60 setCommunityNameタグのパラメータ

パラメータ名 説明 必須

name

戻されるオブジェクトの名前。例: hardware_1

type

オブジェクトのタイプ。Booleanである必要があります(操作に成功するとTRUE、失敗するとFALSE)。

userName

操作をリクエストするOracle Application Server Wirelessユーザーの名前。デフォルトは現行のユーザーです。

×

communityID

すべてのメンバーを削除するコミュニティに関連付けられた変数の名前。例: comm_shared

newName

コミュニティに割り当てられる説明的な新しい名前。


次の例では、ユーザーMikeのリクエストによって、変数comm_sharedに関連付けられた既存のコミュニティのコミュニティ名を設定しています。コミュニティ名はRenamed Shared Communityの値に設定されます。また、この例では、操作の結果も表示しています(TRUEまたはFALSE)。

<loc:setCommunityName
      name="set_comm_name"
      type="Boolean"
      userName="Mike"
      communityID="comm_shared"
      newName="Renamed Shared Community" />
<%= set_comm_name.toString() %>

15.2.2 ロケーションJava APIの使用

アプリケーションの動作に、JSPタグのみで実現するよりも厳密な制御が必要な場合には、ロケーションJava APIを使用して、JSPファイルやサーブレットなどでアプリケーションを作成できます。

この項では、ロケーションJava APIの使用について説明します。JSPの概念やOracleAS Wireless XMLアプリケーションの作成方法については、このマニュアルの他の章を参照してください。

15.2.2.1 ジオコーディング

ジオコーディング・アプリケーションでは、ユーザーに住所を要求し、アプリケーションがその住所をジオコーディングします。このようなアプリケーションの場合は、例15-8のように住所のSimpleFormオブジェクトの構成から開始できます。

例15-8 SimpleFormオブジェクトの構成

<SimpleResult>
  <SimpleForm target="EnterAddress2.jsp">
    <SimpleFormItem name="businessName" title="Business Name" value="Oracle"/>
    <SimpleFormItem name="houseNum"     title="House Number"  value="500"/>
    <SimpleFormItem name="street"    title="Street"     value="Oracle Parkway"/>
    <SimpleFormItem name="city"      title="City"       value="Redwood City"/>
    <SimpleFormItem name="state"        title="State"         value="CA"/>
    <SimpleFormItem name="postalCode"   title="Postal Code"   value="94065"/>
    <SimpleFormItem name="country"      title="Country"       value="US"/>
  </SimpleForm>
</SimpleResult>

次にアプリケーションが起動すると(ユーザーによる各フィールドへの値の入力後)、例15-9のようにデータにアクセスできます。

例15-9 住所データへのアクセス

String
  businessName = request.getParameter("businessName"),
  houseNumber  = request.getParameter("houseNum"),
  streetName   = request.getParameter("street"),
  city         = request.getParameter("city"),
  state        = request.getParameter("state"),
  postalCode   = request.getParameter("postalCode"),
  country      = request.getParameter("country");

ジオコーディングの実行には、例15-10のようにコールを使用できます。(例15-10には示されていませんが、別の形式のSpatialManager.createlocationでは、緯度と経度の座標を持つポイントを指定します。この場合、Locationオブジェクトは作成されますが、ジオコーディングは実行されません。)

例15-10 住所のジオコーディング

Location address =
  SpatialManager.createLocation(
    businessName,
    houseNumber,
    new String[] { streetName },
    null,
    city,
    state,
    postalCode,
    null,
    country);

結果の緯度と経度の値には、例15-11のようにアクセスできます。

例15-11 ジオコーディングされた住所の値へのアクセス

address.getLongitude()
address.getLatitude()
address.getAddressLine1()
address.getCity()
address.getState()

getLongitudeおよびgetLatitudeメソッドがPointインタフェースから継承されることに注意してください。

15.2.2.1.1 国際住所

ローカルの住所書式にあわせてさらに調整するために、oracle.panama.spatial.intladdressパッケージに用意されている国際住所書式オプションを使用できます。(国際住所書式の詳細は、15.1.5.1.4項「住所書式(国際)の構成」を参照。)ユーザーが住所を入力する際に必要な手順が1つ増えます。住所を入力するフォームを表示するには、まず国(住所書式)を選択する必要があります。このフォームは選択する国に依存するため、2つの異なるステップを1つにまとめることはできません。

例15-12では、ユーザーが住所書式(US、German、Frenchなど)を選択できるように、ドロップダウンのSimpleFormSelect要素を作成します。

例15-12 住所書式の選択

<SimpleResult>
  <SimpleMenu>
    <%
      java.util.Iterator it =
       oracle.panama.spatial.intladdress.IntlAddressManager.getAddressFormats();
      while(it.hasNext())
      {
        String name = (String)it.next();
    %>
      <SimpleMenuItem target="enterIntlAddress.jsp?name=<%= name %>">
        <%= name %>
      </SimpleMenuItem>
    <%
      }
    %>
  </SimpleMenu>
</SimpleResult>

次のステップは、指定された住所書式に関連するすべてのアドレス・コンポーネントをリクエストするフォームを提供することです。例15-13のように、コンポーネントは指定された国に基づいて動的に決定されます。

例15-13 指定された国用のアドレス・コンポーネントのリクエスト

<SimpleResult>
  <SimpleForm target="readIntlAddress.jsp?name=<%= request.getParameter("name")
                                                %>">
    <%
      java.util.Iterator addressComponentNames =
        oracle.panama.spatial.intladdress.IntlAddressManager.getAddressFormat(
          request.getParameter("name")).getComponentNames();
      int num = 1;
      while(addressComponentNames.hasNext())
      {
        String name = (String)addressComponentNames.next();
    %>
      <SimpleFormItem name="component<%= num++ %>" title="<%= name %>"/>
    <%
      }
    %>
  </SimpleForm>
</SimpleResult>

例15-14は、その結果です。表示されるコンポーネントと行数は、国に依存します。

例15-14 国固有の書式による住所の表示

<SimpleResult>
  <SimpleText>
<%
  String name = request.getParameter("name");
  boolean finished = false;
  java.util.Vector components = new java.util.Vector();
  for(int i = 1; !finished; i++)
  {
    String component = request.getParameter("component" + i);
    if(component != null)
      components.add(component);
    else
      finished = true;
  }
  String componentArray[] = new String[components.size()];
  for(int i = 0; i < componentArray.length; i++)
    componentArray[i] = (String)components.get(i);
  oracle.panama.spatial.intladdress.IntlAddress loc =
    oracle.panama.spatial.intladdress.IntlAddressManager.createAddress(
      name,
      componentArray);

  java.util.Iterator lines = loc.getAddressLines(false, true);
  while(lines.hasNext())
  {
    %>
      <SimpleTextItem>
        <%= (String)lines.next() %>
      </SimpleTextItem>
    <%
  }
%>
  </SimpleText>
</SimpleResult>

15.2.2.2 ロケーション・マーク

アダプタではロケーション・マークを処理できます。例15-15では、ロケーション・マークを配列に取得しています。(この例では、ロケーション・マークに関連のないコードは省略されています。)

例15-15 ロケーション・マークの取得

…
LocationMark locMarks[] = sr.getSession().getUser().getLocationMarks();
…

LocationMarkによりLocation(住所)が拡張されることに注意してください。

15.2.2.3 ルーティング

ユーザーにより入力された始点住所と終点住所間のルーティング情報を提供するアダプタを作成できます。アダプタでは、次の操作を行う必要があります。

  1. ルーティング設定とオプションを設定します。

  2. ルートを計算します。

  3. 計算したルートをユーザーに表示します(経路と経路マップのリストおよび概観マップなど)。

例15-16では、RoutingSettingsオブジェクトを構成し、結果の概観マップと経路マップの解像度(高さと幅)を指定して、ルーティング設定とオプションを設定しています。

例15-16 ルーティング設定とオプションの設定

RoutingSettings rS = new RoutingSettings(true, false);
rS.setSecondaryOption(RoutingOption.overviewMapHeight, "600");
rS.setSecondaryOption(RoutingOption.overviewMapWidth, "800");
rS.setSecondaryOption(RoutingOption.maneuverMapHeight, "600");
rS.setSecondaryOption(RoutingOption.maneuverMapWidth, "800");

例15-17では、ルートを計算してRoutingResultオブジェクトを戻しています。

例15-17 ルートの計算

RoutingResult rR =
   SpatialManager.getRouter().computeRoute(
      startLoc,
      endLoc,
      null,   // via points
      rS,   // routing options
      Locale.US);

例15-18では、計算したルートをユーザーに表示し、経路と経路マップのリストおよび概観マップを表示します。(この例では、ルーティングAPI固有のコードが太字で示されています。)

例15-18 ユーザーに対するルートの表示

<%!
  public static String translate(String orig)
  {
    return oracle.panama.spatial.XMLEncoder.encodeToSimplifiedXML(orig);
  }
%>

<%
  oracle.panama.spatial.router.RoutingResult rR = ...
%>
<SimpleResult>
  <SimpleImage src="<%= translate(rR.getOverviewMapURL()[0].toString()) %>"/>
  <SimpleText>
    <%
      oracle.panama.spatial.router.Maneuver mans[] = rR.getManeuvers();
      for(int i = 0; i < mans.length; i++) {
    %>
      <SimpleTextItem>
        <%= mans[i].getNarrative() %>
      </SimpleTextItem>
    <% } %>
  </SimpleText>
</SimpleResult>

15.2.2.4 マッピング

典型的なマッピング・アプリケーションの場合、ユーザーは住所を入力して地図を表示します。例15-19では、マップする住所のマップ・イメージURLを取得しています。(Location型の変数locには、以前からジオコーディングされている住所が含まれます。)

例15-19 マップ・イメージURLの取得

String url =
   SpatialManager.getMapper().getMapURL(
      loc,
      oracle.panama.imagex.ImageFormats.GIF,
      800,   // width
      600,   // height
      false);   // allow turning

例15-19では、一部のモバイル・デバイスの画面にマップが収まるように、APIでイメージの幅と高さを変更できるかどうかを、最後のパラメータで指定しています。この例では、このオプションは使用禁止になっています。

例15-19のように最初のパラメータとして単一のPointオブジェクトを渡すかわりに、Pointオブジェクトの配列、またはLocation型(住所)かYPBusiness型のオブジェクトを渡すことができ、これによりPointインタフェースが拡張されます。

15.2.2.5 ビジネス・ディレクトリ(YP)

典型的ビジネス・ディレクトリ(YP)アプリケーションの場合、ユーザーは国、州および都市を指定してリージョンを入力し、ワインのテイスティングやワイナリに関連するなど、なんらかのカテゴリのビジネスを取得します。ユーザーには国、州および都市の入力を要求し、アプリケーションは正しいカテゴリとすべての関連ビジネスを判別する必要があります。

通常、カテゴリを判別する最初のステップは、SimpleFormオブジェクトを介してユーザーにカテゴリのキーワード(wineなど)を要求することです。

次のステップは、例15-20のように、キーワードと一致するすべてのカテゴリを判別することです。

例15-20 キーワードと一致するカテゴリの検索

YPFinder ypF = SpatialManager.getYPFinder();
YPCategory cats[] = ypF.getCategoryAtRoot().getCategoriesMatchingName(keyword);

例15-21に、選択対象のカテゴリを表示する簡単なユーザー・インタフェースを示します。ドロップダウン・メニューが表示され、ユーザーはそこから検索対象と最も一致しているカテゴリを選択します。

例15-21 カテゴリ選択用のユーザー・インタフェース

<SimpleResult>
  <SimpleMenu>
    <%
      oracle.panama.spatial.yp.YPFinder ypF =
        oracle.panama.spatial.SpatialManager.getYPFinder();
      oracle.panama.spatial.yp.YPCategory cats[] =
        ypF.getCategoryAtRoot().getCategoriesMatchingName("auto");
      for(int i = 0; i < cats.length; i++)
      {
        %>
        <SimpleMenuItem
         target="listCategories.jsp?cat=<%= cats[i].getFullyQualifiedName() %>">
            <%= cats[i].getFullyQualifiedName() %>
        </SimpleMenuItem>
       <%
      }
    %>
  </SimpleMenu>
</SimpleResult>

アプリケーションにより選択したカテゴリの完全修飾された名前が確認された場合は、例15-22のように適切なカテゴリを取得できます。

例15-22 カテゴリの検索

YPCategory cat = YPCategory.fromFullyQualifiedName(categoryNameString);
YPBusiness b[] =
  SpatialManager.getYPFinder().getBusinessesInCity(
    cat,
    country,
    state,
    city,
    Locale.US);

例15-22の場合、ドロップダウン・メニューは一般オブジェクトではなくStringオブジェクトから選択させるため、カテゴリ・オブジェクトからStringオブジェクト、Stringオブジェクトから元のカテゴリ・オブジェクトへと変換する必要があります。

15.2.2.6 トラフィック

トラフィック・サービスAPIに基づくアプリケーションを作成する手順は、次のとおりです。

  1. 問合せ用の入力オブジェクト(CityInfoRouteInfoPointおよびLocationなど)を準備します。

  2. TrafficReporterを取得して問合せを送ります。

  3. TrafficReportを取得して情報を処理します。

このセクションのこれ以降では、典型的な操作の例を示します。例15-23では、都市レベルの問合せを実行しています。

例15-23 都市レベルの問合せ

TrafficReporter reporter = SpatialManager.getTrafficReporter();
CityInfo c = new CityInfo("BOSTON", "MA", "US");
TrafficReport report = null;
try{
  report = reporter.getReportViaCity(c);
}catch(LBSException e){
  System.out.println(e.getLocalizedMessage());
}

例15-24では、方向を指定せずにルート・レベルの問合せを実行しており、双方向での事象が戻されます。

例15-24 ルート・レベルの問合せ(双方向での事象)

RouteInfo r = new RouteInfo("US 3", null);
try{
  report = reporter.getReportViaRoute(r,c);
}catch(LBSException e){
  System.out.println(e.getLocalizedMessage());
}

例15-25では、方向(北)を指定してルート・レベルの問合せを実行しています。

例15-25 方向を指定したルート・レベルの問合せ

try{
  report = reporter.getReportViaRoute(r,TrafficReporter.North,c);
}catch(LBSException e){
  System.out.println(e.getLocalizedMessage());
}

例15-26では、指定した緯度と経度のポイントから半径10マイル以内のエリアについて、ルート・レベルの問合せを実行しています。

例15-26 緯度と経度のポイントと半径を指定したルート・レベルの問合せ

p = SpatialManager.createPoint(-71.0607, 42.3659);
try{
  report = reporter.getReportViaLocation(p, 10, TrafficReporter.MILES,
c);
}catch(LBSException e){
  System.out.println(e.getLocalizedMessage());
}

例15-27では、指定した住所から半径10マイル以内のエリアについて、ルート・レベルの問合せを実行しています。

例15-27 住所を指定したルート・レベルの問合せ

Location loc = SpatialManager.createLocation(null, null, "839 Kearny
     Street", null, "San Francisco", "CA", null, null, "US");
try{
  report = reporter.getReportViaAddress(loc, 10, TrafficReporter.MILES);
}catch(LBSException e){
  System.out.println(e.getLocalizedMessage());
}

例15-28では、トラフィック・レポートを処理して有効な情報を取得しています。

例15-28 トラフィック・レポートの処理

Calendar rTime = report.getReportTime();
TrafficIncident[] incidents = report.getIncidents();
if(incidents != null){
  for(int i=0; i<incidents.length; i++){
    TrafficIncident inc = incidents[i];
    String desc = inc.getDescription();
    String severity = inc.getSeverity();
    String type = inc.getType();
    TrafficRoute route = inc.getIncidentRoute();
    String[] locations = inc.getLocationRange();        //text description
    if(locations.length == 2){                          //a location range
      String exit1 = locations[0];
      String exit2 = locations[1];
    }
    else if(locations.length == 1){
      String exit1 = locations[0];                      //one location
    }
    Point geoLocation = inc.getIncidentLocation();      //lon/lat or
lon/lat+radius
    Calendar[] tr = inc.getTimeRange();
  }
}

例15-29では、トラフィック・サポートが提供されている都市のリストを戻します。

例15-29 都市リストの戻り

TrafficCityManager manager = reporter.getCityManager();
CityInfo[] cities = null;
try{
  cities = manager.getActiveCities();
}catch(LBSException e){
  System.out.println(e.getLocalizedMessage());
}

例15-30では、指定した都市(カリフォルニア州サンフランシスコ)でトラフィック・サポートが提供されているルートのリストを戻します。

例15-30 都市のルート・リストの戻り

TrafficCityManager manager = reporter.getCityManager();
CityInfo sf = new CityInfo("SAN FRANCISCO", "CA", "US");
RouteInfo[] routes = null;
try{
  routes = manager.getRoutesInCity(sf);
}catch(LBSException e){
  System.out.println(e.getLocalizedMessage());
}

15.2.3 Webサービスの使用

Oracle Application Serverのロケーション・サービスは、GeocoderMapperRouterまたはYPFinderのインタフェースの機能を使用するワイヤレス・アプリケーションによって、Webサービスをサポートします。OracleAS Wireless内で実行するアプリケーションの場合、アプリケーション開発者が特別なコーディングを追加する必要はありません。むしろ、Webサービスは、ジオコーディング、マッピング、ルーティング、ビジネス・ディレクトリ(YP)およびモバイル・ポジショニングをサポートするサービス・プロキシとして統合されています。

外部アプリケーションを開発する場合は、使用する言語がJavaであるかどうかに関係なく、Wirelessに付属する次の種類のファイルを使用してロケーション・ベースのWebサービスにアクセスできます。

15.2.3.1 WSDLファイル

次のWSDLファイルでは、ジオコーディング、マッピング、ルーティングおよびビジネス・ディレクトリ(イエロー・ページ)サービスのWebサービス・インタフェースを記述します。

  • LbsSoapServiceGeocoder.wsdl

  • LbsSoapServiceMapper.wsdl

  • LbsSoapServiceRouter.wsdl

  • LbsSoapServiceYPFinder.wsdl

15.2.3.2 XMLファイル

次のXMLファイルには、スキーマ・ファイルに対するXML文書の例が含まれています。

  • lbsAddress.xml

  • lbsAddressArray.xml

  • lbsAddressArray2.xml

  • lbsBusiness.xml

  • lbsBusinessArray.xml

  • lbsCategory.xml

  • lbsMap.xml

  • lbsMapURL.xml

  • lbsMapURLArray2.xml

  • lbsPhone.xml

  • lbsPhoneArray.xml

  • lbsPoint.xml

  • lbsPointArray.xml

  • lbsRoute.xml

  • lbsRouteSettings.xml

15.2.3.3 XSDファイル

次のXSDファイルでは、Webサービス・コールにXMLパラメータおよび戻り値を記述します。

  • lbsAddress.xsd

  • lbsAddressArray.xsd

  • lbsAddressArray2.xsd

  • lbsBusiness.xsd

  • lbsBusinessArray.xsd

  • lbsCategory.xsd

  • lbsMap.xsd

  • lbsMapURL.xsd

  • lbsMapURLArray2.xsd

  • lbsPhone.xsd

  • lbsPhoneArray.xsd

  • lbsPoint.xsd

  • lbsPointArray.xsd

  • lbsRoute.xsd

  • lbsRouteSettings.xsd

15.3 モバイル・ポジショニングの有効化

モバイル・ポジショニングを、ロケーション・ベースのアプリケーションの個々のユーザーまたはユーザー・グループに使用可能にすることができます。ユーザーのモバイル・ポジショニングとは、そのユーザーのロケーションを特定することです。ユーザーのモバイル・ポジショニングが有効になっている場合、ユーザーの現在のロケーションが自動ポジショニングから動的に取得されるかデフォルト・ロケーション・マークから取得されるかに関係なく、OracleAS Wirelessではそのロケーションを使用してロケーション・ベースのサービスまたはフォルダの可視性を決定します。サービスまたはフォルダをシステム・リージョンまたは定義済のカスタム・リージョンに関連付けると、ロケーション依存(15.5.3項を参照)として定義できます。ロケーション依存サービスまたはフォルダがユーザーのポータルに表示されるのは、そのユーザーの(自動ポジショニングまたはデフォルト・ロケーション・マークからの)現在のロケーションが、関連付けられているリージョン内にある場合のみです。たとえば、ユーザーの現在のロケーションがボストンにある場合は、ボストンのトラフィック情報サービスが表示され、それ以外の場合、そのユーザーにはサービスは表示されません。

モバイル・ポジショニングには、手動と自動の2種類があります。

この項では、手動ポジショニングと自動ポジショニングの詳細と、各種ポジショニングを使用可能にする方法について説明します。

15.3.1 手動ポジショニング

手動ポジショニングでは、特定のロケーションをアプリケーションのユーザーに関連付けます。ロケーションを明示的に指定する方法(ユーザーが住所またはロケーション・マークを入力するなど)と、そのユーザーのデフォルト・ロケーション・マークを設定する方法があります。ロケーション・マークは、通常は緯度と経度の座標に関連付けられている位置で、名前が付いています。たとえば、アプリケーション・ユーザーがロケーション・マークMyHomeおよびMyOffice(それぞれユーザーの自宅とオフィスのロケーション)を作成し、それぞれにジオコーディングされた住所を関連付けることができます。このユーザーがMyHomeをデフォルト・ロケーション・マークとして指定すると、アプリケーションではユーザーの自宅住所がユーザーのロケーションとみなされます。

ユーザーがジオコーディングされていないデフォルト・ロケーション・マークを設定すると、ジオコーディング操作が実行されてから、ロケーション・マークがデフォルトとして設定されます。ジオコーディング操作に失敗した場合は、そのロケーション・マークをデフォルトとして設定しないことをお薦めします。これは、デフォルト・ロケーション・マークについては、多くの機能(ロケーション依存のサービスの可視性など)がジオコーディングされた情報に依存しているためです。

ロケーション・マークの詳細は、15.1.7項「ロケーション・マーク」を参照してください。

15.3.1.1 手動ポジショニングの有効化

手動ポジショニングをユーザーに使用可能にするには、まず使用するロケーション・マークを設定します。API(LocationMarkクラス)またはPersonalization PortalのWebインタフェースを使用して、1つ以上のロケーション・マークを作成し(存在しない場合)、ロケーション・マークの1つをそのユーザーのデフォルトとして指定します。


注意:

自動ポジショニング(15.3.2項を参照)がオフになっている場合、またはポジショニング・サーバーが一時的に使用不可能になっている場合は、手動ポジショニングが使用され、ユーザーのデフォルト・ロケーション・マークが使用されます。(自動ポジショニングのオンとオフは、OracleAS Wirelessシステム・マネージャを使用して切り替えることができます。)

Personalization Portalのインタフェースを使用して手動ポジショニングを使用可能にする手順は、次のとおりです。

  1. Personalization PortalのWebインタフェースにログインします。

  2. 「ロケーション・マーク」タブをクリックします。

  3. デフォルト・ロケーションにするロケーション・マークが存在しない場合は作成します。(「作成」をクリックし、表示されるページで情報を指定します。)

  4. デフォルト・ロケーションにするロケーション・マークを選択します。

  5. 「デフォルトを設定」をクリックします。

15.3.2 自動ポジショニング

自動ポジショニングを使用すると、ユーザーのモバイル・デバイスのロケーション・ベースの位置に基づいて、そのユーザーのロケーションを判別できます。ポジショニングのサービス品質(QoS)値を設定して、ロケーションの更新頻度、つまり潜在的な精度を決定できます。

OracleAS Wireless APIにより、アプリケーションでは現行のセッションを介して、モバイル・ユーザーの現行のロケーションにアクセスできます(oracle.panama.rt.SessionインタフェースのgetCurrentLocation()を参照)。システムで自動ポジショニングがオンになっている場合は、モバイル・ポジショニング・システムからユーザーの現在の物理的位置が戻されます。自動ポジショニングがオフになっている場合、またはポジショニング・サーバーが一時的に使用不可能になっている場合は、そのユーザーのデフォルト・ロケーション・マークが戻されます。

プライバシとプライバシ関連情報のセキュリティは、ロケーション取得システムでは重要な問題です。OracleAS Wirelessのロケーション・サービスにはプライバシ管理コンポーネントが用意されており、ユーザーは自分のプライバシ設定の表示や編集、ポジショニング操作の有効化や無効化をできる他、1人以上の他ユーザー(モバイル・コミュニティ)に一定の時間枠内でのポジショニング情報の取得を許可できます。また、アプリケーション開発者はこれらの機能に公開APIを介してアクセスできます。

自動ポジショニングは、図15-4に示すモバイル・ポジショニング・フレームワークにより制御されます。

図15-4 モバイル・ポジショニング・フレームワーク

図15-4の説明は次のとおりです
図15-4「モバイル・ポジショニング・フレームワーク」の説明

図15-4では、次の事項を表しています。

  • アプリケーション開発者は、モバイル・ポジショニングAPIとプライバシAPIを併用してサービスを提供できます。

  • アプリケーションのモバイル・ポジショニングAPIは、ロケーション・キャッシュ(15.3.2.2項を参照)およびロケーション取得レイヤーと通信し、ユーザーのロケーションを確認します。キャッシュが使用されるかどうかは、15.3.2.3項で説明するポジショニングのサービス品質(QoS)値の影響を受けます。

  • ロケーション取得レイヤーは、実際の現在位置をロケーション・キャッシュとモバイル・ポジショニングAPIに渡します。

  • プライバシ管理の論理は、モバイル・ポジショニング・フレームワークのうちプライバシに関連する側面を制御します。以降の各項を参照してください。

15.3.2.1 GPSデバイスを使用したロケーションの提供

モバイル・デバイスは、全地球測位システム(GPS)を介して提供されるそのモバイル・デバイスの現在のロケーションを、OracleAS Wirelessサーバーに送信できます。送信された現在のロケーションには、モバイル・ポジショニングAPIとプライバシAPIを使用して問い合せできます。

モバイル・デバイス上で動作し、デバイスの現在のロケーションをOracleAS Wirelessサーバーに送信するクライアント・アプリケーション・プログラムを作成する必要があります。データは、OracleAS Wirelessサーバー上で動作するJSPに対して、またはWebサービスを介して送信できます。

データはXMLフォーマットで、次のスキーマに準拠している必要があります。

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
elementFormDefault="qualified">
 <xsd:element name="MP_GPS">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="USERNAME"/>
    <xsd:element ref="PASSWORD"/>
    <xsd:element ref="MSID"/>
    <xsd:element ref="TIME" minOccurs="0"/>
    <xsd:element ref="GMT" minOccurs="0"/>
    <xsd:element ref="POS"/>
    <xsd:element ref="ALTITUDE" minOccurs="0"/>
    <xsd:element ref="ALT_UNCERTAINTY" minOccurs="0"/>
    <xsd:element ref="VELOCITY" minOccurs="0"/>
    <xsd:element ref="BEARING" minOccurs="0"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>
 <xsd:element name="ALTITUDE" type="xsd:string"/>
 <xsd:element name="ALT_UNCERTAINTY" type="xsd:string"/>
 <xsd:element name="BEARING" type="xsd:string"/>
 <xsd:element name="GMT" type="xsd:string"/>
 <xsd:element name="LAT" type="xsd:string"/>
 <xsd:element name="LONG" type="xsd:string"/>
 <xsd:element name="MSID" type="xsd:string"/>
 <xsd:element name="PASSWORD" type="xsd:string"/>
 <xsd:element name="POS">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="LAT"/>
    <xsd:element ref="LONG"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>
 <xsd:element name="TIME" type="xsd:string"/>
 <xsd:element name="USERNAME" type="xsd:string"/>
 <xsd:element name="VELOCITY" type="xsd:string"/>
</xsd:schema>

<USERNAME>要素および<PASSWORD>要素は、リクエストを許可するためにOracleAS Wirelessサーバーで使用されます。

<MSID>要素は、モバイル・デバイスまたはユーザーのモバイル・ステーションIDです。

オプションの<TIME>要素は、このロケーションがGPSで生成された時刻を示します。この値が不明な場合は、OracleAS Wirelessサーバーがデータを受信した時間が使用されます。

オプションの<VELOCITY>要素では、モバイル・デバイスの速度(m/秒)が指定されます。

オプションの<BEARING>要素では、北からの時計回りで方位角(緯度)が指定されます。

オプションの<ALTITUDE>要素では、モバイル・デバイスの海抜高度(m)が指定されます。

15.3.2.2 ロケーション・キャッシュ

ロケーション・キャッシュはメモリー内の領域であり、ここにはモバイル・ユーザーのID、最後に取得されたロケーション情報および情報の収集時刻が一時的に格納されます。ロケーション・キャッシュ内でモバイル・ポジショニング・リクエストが検索され、ロケーションをリクエストされたユーザーのエントリがキャッシュ内にある場合は、キャッシュ・エントリの時刻と現在のリクエスト時刻の差が、ポジショニング・リクエストのポジショニングのサービス品質レベルと比較されます。(ポジショニングのサービス品質については、15.3.2.3項を参照。)

ポジショニング・リクエストがキャッシュ内の情報により満たされる場合、位置の検出、つまりネットワークのラウンドトリップ操作は不要です。

15.3.2.3 ポジショニングのサービス品質

ポジショニングのサービス品質(QoS)値により、次のことが制御されます。

  • ロケーションを判別するためにデバイスの現在の位置とロケーション・キャッシュのどちらをチェックするか。

  • ロケーション・キャッシュを調べる場合にアプリケーションで使用する、最後にキャッシュされたロケーション値の最大経過時間(つまり、値がロケーション・キャッシュに書き込まれてからの秒数)。

ポジショニングのサービス品質を指定するには、次の2つの方法があります。

  • アプリケーションで使用するロケーション・キャッシュ内の位置の最大経過秒数として指定します。ロケーション・キャッシュ内の最新の位置が指定した時刻よりも古い場合は、デバイスの実際の現在位置が取得されてキャッシュに書き込まれ、アプリケーションで使用されます。値0を指定すると、ポジショニング・フレームワークでは常に実際のポジショニング結果が示され、ロケーション・キャッシュは検索されません。

  • 次の文字列値の1つとして指定します。それぞれの値は、ポジショニングの品質レベルを表します。

    • Exact: ポジショニング・フレームワークでは、常に実際のポジショニング結果が示され、ロケーション・キャッシュは検索されません。0秒を指定した場合と同等です。

    • High: 高水準の精度を表します。

    • Medium: 中程度の精度を表します。

    • Low: Medium値より低水準の精度を表します。

High、MediumおよびLow値の場合、ポジショニング・フレームワークでは経験則により経過期間の値(秒数)が判断されます。

ポジショニングのサービス品質レベルにはシステム・デフォルトがあり、ユーザーが設定できます。ポジショニングのサービス品質レベルがポジショニング・リクエストで指定されていない場合は、システム・デフォルトが使用されます。レベルは、モバイル・ポジショニングAPI(15.3.2.8項「モバイル・ポジショニングAPI」を参照)またはシステム・マネージャを使用して設定できます。

ポジショニングのサービス品質レベルを選択するときのトレードオフは、精度とアプリケーションのパフォーマンスです。値として0秒またはExactを指定すると実際の現在位置が取得されることが保証されますが、実際の位置を取得するには、モバイルのポジショニング・リクエストごとにネットワーク上でサービス・プロバイダへのラウンドトリップが必要です。この種のラウンドトリップ操作により、特に多数のユーザーに関するポジショニング・リクエストや同一ユーザーに関する多数のポジショニング・リクエストがある場合には、アプリケーションが低速になる可能性があります。アプリケーションで常に実際の位置を知る必要がある場合にのみ、値として0秒またはExactを使用してください。値Lowを使用すると、戻されるロケーションの精度は(ユーザーが移動しない場合を除き)最も低くなりますが、ロケーションがキャッシュから取得される確率が高くなり、ネットワークのラウンドトリップ操作が不要になります。ユーザーの移動距離が小さい場合や、ゆっくり移動している場合、または現在の実際のロケーションを知ることが重要ではない場合は、値Lowを使用するのが最も適切となることがあります。

15.3.2.4 ポジショニング・プロバイダの指定

自動モバイル・ロケーションは、Positioner.requestPositionファンクションのコールによって問い合せられます(Positioneroracle.panama.mpパッケージ内のクラスです)。Positionerオブジェクトは、1つ以上のモバイル・ポジショニング・プロバイダに基づいています。他のロケーション・サービス・プロバイダと同様に、モバイル・ポジショニングを構成するには、名前、バージョン、URL、ユーザー名およびパスワードなどの情報を指定します。

ただし、他のロケーション・サービスとは異なり、モバイル・ポジショニング・サービスの場合は、ポジショニングを処理できるプロバイダが特定の1つのみである可能性があります。他のロケーション・ベースのサービスの場合、このようなことはまずありません。たとえば、カリフォルニアのマップをリクエストすると、複数のマッピング・プロバイダがそのマップを提供できます。ただし、特定の電話番号(+4412345678など)のモバイル位置をリクエストした場合は、その位置を提供できるプロバイダが1つのみである可能性が高くなります。一般に、モバイルID(通常は電話番号)では、ワイヤレスの電話会社が識別されるため、1つ以上のモバイル・ポジショニング・プロバイダも判別されます。したがって、アプリケーション開発者は、特定のモバイル・ポジショニング・プロバイダに基づいて位置を取得できるようにする必要があります。

アプリケーションの様々なニーズを満たすために、MPManagerクラスには複数のgetPositionerシグネチャが用意されています。

  • getPositioner()

  • getPositioner(MPProvider provider)

  • getPositioner(MPProvider[] providers)

インターネット・ポータルに様々な電話会社からのサブスクライバがいて、各サブスクライバは使用するプロバイダを実行時にモバイルIDに基づいて動的に決定する必要がある場合があります。このニーズは、モバイル・ポジショニング・プロバイダのセレクタ・フック(oracle.panama.mp.MPProviderSelectorインタフェースを介して実装)によりサポートされます。

プロバイダ・セレクタ・フックはモバイルIDを取り、ポジショニング・リクエストを処理できるMPProviderオブジェクトの配列を戻します。デフォルトのプロバイダ・セレクタ・フックはoracle.panama.mp.core.ProviderSelectorImplにより提供され、システム内のすべてのプロバイダを戻します。これは、ポジショニング・フレームワークではデフォルトでプロバイダが選択されないことを意味します。セレクタ・フックは、Positionerによりpositioner.requestPositionのコール時に使用され、getPositioner()のシグネチャに適用できます。Positionerのコール時にすでにプロバイダが指定されている場合は、セレクタ・フックは使用されません。

OracleAS Wireless APIにより、アプリケーションでは、現行のセッション(Session.getCurrentLocation())を介してモバイル・ユーザーの現行のロケーションにアクセスできます。デフォルトでは、ユーザーのモバイルID(ユーザーのプロファイルに格納)を使用して、モバイル・ポジショニングAPIがコールされ、現在位置が取得されます。ただし、高度なユーザーがポジショニングに異なる値を使用する必要がある場合は、oracle.panama.rt.hook.MobileIDHookインタフェースを実装して、独自のモバイルIDフックを記述できます。モバイルIDフックは、現行ユーザーの情報を取り、ポジショニング用にそのユーザーのモバイルIDを戻します。自動ポジショニングに失敗すると、システムは現在のロケーションとしてユーザーのデフォルト・ロケーション・マークにフェイルオーバーします。

プロバイダ・セレクタ・フックまたはモバイルIDフックを実装する必要はないことに注意してください。デフォルト設定がニーズを満たしている場合は、単にモバイル・ポジショニング・プロバイダを構成し、MPManager.getPositioner().requestPosition()をコールできます。

次にまとめを示します。

  • Positionerは、システム内で構成されているすべてのモバイル・ポジショニング・プロバイダに基づいてシステム・デフォルトを使用するか、1つ以上の特定のプロバイダのみに基づいてカスタマイズできます。

  • システム・デフォルトを使用すると、プロバイダ・セレクタ・フックはシステム・デフォルトPositionerを選択する場合にのみ使用されます。セレクタ・フックはモバイルIDを取り、処理できるプロバイダ(1つ以上)を決定します。バッチ問合せの場合は、バッチ内の最初のモバイルIDにより、選択されるプロバイダが決定されます。

  • Positionerが複数のプロバイダに基づいており、プロバイダがリクエストを処理できない場合は、フェイルオーバーが提供されます。

プログラムでは、PositionResultを使用する前に、そのエラー・コードが0(ゼロ)以外であるかどうかをチェックする必要があります。

例15-31では、システム・デフォルト・プロバイダとデフォルトのポジショニング・サービスの品質を使用して、ユーザーの位置を取得しています。

例15-31 システム・デフォルト・プロバイダとデフォルトのQoSを使用した位置の取得

Positioner positioner = MPManager.getPositioner();
PositionResult res = positioner.requestPosition("46708123456790");
Date timeStamp = res.getTimeStamp();
double lon = res.getPositionAreas()[0].getCenterPointLongitude();
double lat = res.getPositionAreas()[0].getCenterPointLatitude();

例15-32に、ユーザーの位置を指定してポジショニングのサービス品質レベルを指定する2つの例を示します。最初の例では品質を文字列でHIGHと指定し、2番目の例では品質を秒数で指定しています。(ポジショニングのサービス品質を指定する方法は、15.3.2.3項を参照してください。)

例15-32 位置の指定によるQoSの取得

PositionResult res = positioner.requestPosition("46708123456790", ServiceQoS.HIGH_QUAL);

PositionResult res = positioner.requestPosition("46708123456790", new ServiceQos(120));

例15-33では、特定のプロバイダの配列に基づいてユーザーの位置を取得しています。

例15-33 プロバイダの配列に基づく位置の取得

MPProvider[] providers = new MPProvider[2];
providers[0] = MPManager.lookup("CellPoint", "1.2");
providers[1] = MPManager.lookup("Ericsson", "3.0");
Positioner positioner = MPManager.getPositioner(providers);

15.3.2.5 ポジショニング権の付与と取消し

デフォルトでは、ユーザーのロケーション情報にアクセスできるのは、そのユーザーのみです。ユーザーには、他のユーザーのロケーション情報にアクセスする権利は付与されていません。自分のロケーション情報へのアクセスを他のユーザーに許可する必要がある場合は、そのユーザーにポジショニング権を付与する必要があります。ポジショニング権を付与するユーザーは、後で付与した権利を取り消すことができます。

また、ポジショニング権は、特定の期間または定期的な間隔で付与することもできます。多くの場合、ユーザーは、自分のロケーション情報に対するアクセス権を他のユーザーに付与する期間を制限する必要があります。たとえば、この権利を同僚にウィークデイの午前9:00から午後5:00までは付与し、夜間や週末には付与しない必要があるとします。ユーザーは、この種の時間制限を次のように指定できます。

  • 付与する権利の開始日と終了日

  • 1日の開始時刻と終了時刻

  • 除外: 開始日から終了日までのうち、土曜と日曜など、ポジショニング権から除外する日

15.3.2.6 モバイル・コミュニティ

モバイル・コミュニティとは、ポジショニング権の付与または拒否の対象にできる1人以上のユーザーのコレクションです。モバイル・ユーザーを1つ以上のコミュニティに割り当てて、ユーザーがコミュニティにポジショニング権を付与したり拒否できます。ユーザーはPersonalization Portalを介してコミュニティ情報を表示および管理でき、アプリケーション開発者はこれらの機能に公開APIを介してアクセスできます。

モバイル・コミュニティの概念は、多くのアプリケーション・シナリオで役に立ちます。たとえば、プロジェクト・チームはプロジェクト・コミュニティを作成できます。チームのメンバーは、自分のロケーション情報へのアクセス権を他のメンバーに個別に付与するかわりに、プロジェクト・コミュニティに付与できます。たとえば、フィールド・サービス管理者は、モバイル・ポジショニングとロケーション・ベースのアラートを使用して、サービス担当が付近にいる時期を知り、その担当に連絡してステータスを更新したり、ローカルな問題に対応させることができます。

可視性の概念は、コミュニティとそのメンバーに適用されます。可視性とは、システム・ユーザーがコミュニティまたはメンバーの存在を表示して、なんらかの関連情報を取得できることを指します。可視性は、そのユーザーに管理権限があるかどうか、該当するコミュニティのメンバーであるかどうかなど、リクエスト側ユーザーとコミュニティまたはメンバーとの関係により異なります。可視性は、プライバシAPIのコールを使用して実装されます。詳細は、15.3.2.9項「プライバシAPI」を参照してください。

ユーザーがコミュニティまたはそのメンバーに関する情報を表示するために行うリクエストの場合は、次の可視性条件が可能です。

  • リクエスト側ユーザーは、コミュニティとそのメンバーを参照できます。

  • リクエスト側ユーザーは、コミュニティを参照できますが、そのメンバーを参照できません。たとえば、コミュニティは、その有無をすべてのシステム・ユーザーが参照できるように設定されていても、コミュニティ・メンバーに関する情報を使用できるのは管理者のみです。

  • リクエスト側ユーザーはコミュニティを参照できないため、そのメンバーも参照できません。

可視性に対する様々なユーザー要件に対応するために、各種のコミュニティがサポートされています。コミュニティの作成時には、次のコミュニティ・タイプを指定できます。

  • プライベート: プライベート・コミュニティを参照できるのはコミュニティの作成者のみで、完全に制御できるのは作成者のみです。コミュニティのメンバーなど、他のユーザーがプライベート・コミュニティの表示や操作を行うことはできません。

  • 共有: 共有コミュニティは、すべてのコミュニティ・メンバーが参照できますが、システムの他のユーザーは参照できません。コミュニティ・メンバーは、他のすべてのコミュニティ・メンバーを参照できます。コミュニティ・メンバーは自分自身をコミュニティから削除できます。

  • メンバーの可視性を伴うパブリック: メンバーの可視性を伴うパブリック・コミュニティは、システムのすべてのユーザーが参照できます。システムのすべてのユーザーは、自分自身をコミュニティに追加したり、コミュニティから削除できます。

  • パブリック・メンバーが可視性を制御: メンバーが可視性を制御するパブリック・コミュニティは、システムのすべてのユーザーが参照できます。ただし、各メンバーは自分を他のユーザーに参照させるかどうかを制御できます。

  • システム: システム・コミュニティはシステムのすべてのユーザーが参照できますが、メンバーを参照できるのは管理者権限を持つユーザーのみです。管理者権限を持っていないユーザーは、自分自身をシステム・コミュニティから削除できません。

次のコミュニティ操作がサポートされています。

  • コミュニティの作成と初期メンバーの追加

  • コミュニティの削除

  • ユーザーが参照できるすべてのコミュニティのリストの表示

  • ユーザーが参照できるすべてのコミュニティ・メンバーの表示

  • コミュニティへのユーザーの追加(コミュニティ作成者の場合)

  • コミュニティからのユーザーの削除(コミュニティ作成者、または自分自身を共有コミュニティから削除する場合は、すべてのコミュニティ・メンバー)

15.3.2.7 プライバシ・ディレクティブと自動ポジショニングの有効化/無効化

初期のデフォルトのプライバシ設定では、システムにはユーザーをポジショニングする権利がなく、ユーザーの位置をロケーション・キャッシュに一時的に格納して、そのユーザーのロケーション情報をキャッシュ・ログに書き込みます。ただし、管理者はOracleAS Wirelessシステム・マネージャで次のプライバシ・ディレクティブのいずれかを使用して、プライバシのシステム・デフォルト・レベルを変更できます。また、ユーザーは、Personalization Portalを介して各自のプライバシ・レベルを制御できます。ここでは、プライバシ・ディレクティブは、適用されるプライバシを降順でリストしています。

  • Disable Positioning and Caching: ユーザーのポジショニングは許可されません。システムにはユーザーをポジショニングする権利がなく、ユーザーのロケーションにはアクセスできません。この設定は、最も厳しいプライバシを提供します。

  • Enable Positioning、Disable Caching: ユーザーのロケーション情報はキャッシュされません。システムにはユーザーをポジショニングする権利がありますが、そのユーザーのロケーション情報をロケーション・キャッシュに格納できません。この場合、ユーザーのロケーションは、常にポジショニング・サービス・プロバイダに直接アクセスすることで取得されます。

    たとえば、このディレクティブを使用すると、モバイル・ユーザーの移動を追跡できず、ユーザーのオフィスまたはサービス・プロバイダが提供するロケーションとして、任意の時点における位置がレポートされる可能性があります。

  • No Log: ユーザーのロケーション情報はロケーション・キャッシュに格納されますが、キャッシュ・ログには書き込まれません。このユーザーのキャッシュ項目は、キャッシュから元に戻されてもログに書き込まれず、単に破棄されます。

    たとえば、No Logディレクティブを使用すると、モバイル・ユーザーの現在位置は使用可能になりますが、以前の位置はロケーション・キャッシュから破棄されていると使用できない可能性があります。

  • Enable Positioning and Caching: システムには、ユーザーのロケーション情報を取得してキャッシュする権利があります。

15.3.2.8 モバイル・ポジショニングAPI

モバイル・デバイスのポジショニングは、Positionerクラス内の対応するrequestPositionファンクションをコールすることで実行されます。このAPIにより、アプリケーション開発者はポジショニングのサービス品質(QoS)レベルを指定できます(これらのレベルについては、15.3.2.3項を参照。)

15.3.2.9 プライバシAPI

アプリケーションの開発者は、ロケーション・サービスのプライバシAPIを介してプライバシ機能を管理できます。この項では、プライバシAPIの例を使用して説明します。

15.3.2.9.1 LocationPrivacyManagerクラス

LocationPrivacyManagerクラスは、ポジショニング権の付与、取消し、有効化と無効化、システムのプライバシ・オプションの設定と取得など、ロケーションのプライバシに関連する操作をすべて処理し、ユーザーに他のユーザーをポジショニングする権利があるかどうかをチェックします。また、このクラスは、LocationPrivacyAuthオブジェクトを取り出す手段を提供します。このオブジェクトには、プライバシ認可項目に関する情報が格納されます。

ユーザーは、grantAuthorizationを使用して他のユーザーまたはモバイル・コミュニティに認可を付与できます。disableAuthorizationを使用すると、認可を一時的に無効化できます。enableAuthorizationを使用すると、無効化した認可をリカバリできます。付与した権利は、revokeAuthorizationを使用して永続的に取り消すことができます。checkAuthorizationを使用すると、特定の時刻にユーザーが他のユーザーをポジショニングする権利を持っているかどうかをチェックできます。

すべてのプライバシ認可操作はアプリケーション固有であり、その操作が実行されるアプリケーションにのみ影響します。

15.3.2.9.2 CommunityManagerクラス

CommunityManagerクラスは、コミュニティの作成と削除、コミュニティ情報の取出しなど、コミュニティ関連の操作を処理します。単一のコミュニティに固有のコミュニティ操作は、Communityインタフェースで定義します。

15.3.2.9.3 LocationPrivacyAuthインタフェース

LocationPrivacyAuthインタフェースは、認可期間、認可が発生するサービス、権利を付与するユーザー、権利を受け取るユーザーなど、ロケーション認可項目に固有の情報を取り出すメソッドを提供します。

15.3.2.9.4 Communityインタフェース

Communityインタフェースは、コミュニティ・オブジェクトに関する情報の取出し、コミュニティのメンバーの追加と削除およびコミュニティ属性の設定を行うメソッドを提供します。

15.3.2.9.5 AuthPeriodクラス

AuthPeriodクラスは、ユーザーが他のユーザーにポジショニング権を付与するときに使用される時間の範囲をメンテナンスします。認可期間は、開始日、終了日、開始時刻、終了時刻および除外で構成されます。また、このクラスは、クラスが表す時間の範囲に特定の時刻が含まれるかどうかをチェックするためのメソッドを提供します。

15.3.2.9.6 LocationPrivacyExceptionクラス

LocationPrivacyExceptionクラスは、PanamaExceptionのサブクラスです。このクラスは、ロケーションのプライバシ固有の例外を表します。

15.3.2.9.7 プライバシAPIの例

この項では、ロケーション・サービスのプライバシAPIの例を示します。それぞれの例は、iAS-wireless-home¥sample¥sampleadapter¥mp¥privacyディレクトリにあるサンプル・アダプタSampleCommunityManager.javaおよびSampleFriendFinder.javaから抜粋したものです。この2つのサンプル・アダプタは、プライバシAPIの主機能の例です。

例15-34では、指定したタイプのうち、ユーザーが参照できるすべてのコミュニティをリストしています。

例15-34 指定したタイプのうちユーザーが参照できるコミュニティのリスト

CommunityManager commMan = CommunityManager.getInstance();
...
try{
     ResultSetEnumeration comms = commMan.getVisibleCommunities(user,type);
     while (comms.hasNextElement()){
          sfo = XML.makeElement(sfs,"SimpleFormOption");
          oracle.panama.model.Community comm =
(oracle.panama.model.Community)(comms.next());
          sfo.setAttribute("value",String.valueOf(comm.getId()));
          txt = XML.makeText(sfo,comm.getCreator().getName()+":"+ comm.getName() );
          sfo.appendChild(txt);
          sfs.appendChild(sfo);
    }
  }catch(Exception e){ throw new AdapterException(e);    }

例15-35では、ユーザー入力に基づいてユーザーまたはコミュニティにポジショニング権を付与しています。

例15-35 ユーザーまたはコミュニティへのポジショニング権の付与

CommunityManager commMan = CommunityManager.getInstance();
LocationPrivacyManager priMan = LocationPrivacyManager.getInstance();

...

SimpleDateFormat ddf = new SimpleDateFormat("MM/dd/yyyy");
SimpleDateFormat tdf = new SimpleDateFormat("HH:mm");
Calendar startD,endD,startT,endT=null;
try{
    startD = Calendar.getInstance();
    startD.setTime(ddf.parse(sdate));

    endD = Calendar.getInstance();
    endD.setTime(ddf.parse(edate));

    startT = Calendar.getInstance();
    startT.setTime(tdf.parse(stime));

    endT = Calendar.getInstance();
    endT.setTime(tdf.parse(etime));

}catch(ParseException e){
      showError(result,sr,"Illegal Date Format","&grantmenu=y");
      return;
}

StringTokenizer st = new StringTokenizer(excl,",");
String exclDate = null;
byte exclusions=0;
while (st.hasMoreTokens()) {
    exclDate=st.nextToken();
    if ("Mon".equals(exclDate))
         exclusions =(byte)(exclusions|AuthPeriod.MONDAY);
    else if ("Tue".equals(exclDate))
         exclusions =(byte)(exclusions | AuthPeriod.TUESDAY);
    else if ("Wed".equals(exclDate))
         exclusions =(byte)(exclusions | AuthPeriod.WEDNESDAY);
    else if ("Thu".equals(exclDate))
         exclusions =(byte)(exclusions | AuthPeriod.THURSDAY);
    else if ("Fri".equals(exclDate))
         exclusions =(byte)(exclusions | AuthPeriod.FRIDAY);
    else if ("Sat".equals(exclDate))
         exclusions =(byte)(exclusions | AuthPeriod.SATURDAY);
    else if ("Sun".equals(exclDate))
         exclusions =(byte)(exclusions | AuthPeriod.SUNDAY);
    else {
        showError(result,sr,"Illegal Exclusions.", "&grantmenu=y");
        return;
    }
 }

 AuthPeriod period = new AuthPeriod(startD,endD, startT,endT, exclusions);
 oracle.panama.model.Community commObj = null;
 User posUserObj = null;
 try{
    if (community!=null && !community.equals("")){
       commObj = commMan.getCommunity(Long.parseLong(community));
       priMan.grantAuthorization(service,owner,commObj,period);
    }
   else{
      posUserObj = services.lookupUser(positionUser);
      priMan.grantAuthorization(service,owner,posUserObj,period);
  }
}catch(PanamaException e){ throw new AdapterException(e);   }

15.4 ロケーション・イベント・サーバー

ロケーション・イベント・サーバーは、ロケーション・ベースの条件が発生すると、イベントを生成します。イベントの結果として、ロケーション・ベースのアラートが、モバイル・ユーザーの現行のロケーションに基づいて配信されます。

ワイヤレス・アラート・エンジンを使用すると、ユーザーはロケーション・ベースのアラート・サービスをサブスクライブし、ロケーション・ベースの条件を指定できます。ロケーション・ベースの条件が満たされると、アラート・エンジンはロケーション・イベントを受信します。アラートを配信するための他のすべての条件も満たされた場合、アラート・エンジンはサブスクライバにアラートを送信します。次に、ロケーション・ベースのアラートをモバイル・ユーザーに提供できる典型的な使用例を示します。

潜在的には、より複雑な使用例が考えられます。たとえば、ロケーション関連の条件とロケーションには直接関連しない条件の組合せです。

15.4.1 ロケーション・イベント・サーバーの概要

ロケーション・ベースのアラートとは、ロケーション・ベースの条件のあるアラート・サービスです。

ロケーション・ベースの条件とは、条件有効期限と条件評価モードのような、ロケーション・ベースのアラート基準と関連情報のセットです。この条件が満たされるのは、条件にあるすべての基準が満たされた場合のみです。

ロケーション・ベースのアラート基準とは、ロケーション・ベースの条件の構成要素です。各基準には、ターゲット、リージョンおよびタイプの3つの要素があります。ターゲットは、ユーザー、コミュニティまたはモバイル・デバイスです。リージョンは、システム定義ロケーションまたはユーザー定義ロケーションです。タイプは、リージョンに関するターゲットの位置を示すINまたはOUTにする必要があります。ロケーション・ベースのアラート基準の例は、次のとおりです。

  • チームのすべてのメンバーがシカゴにいる。

  • スミス氏はニューヨーク州以外の場所にいる。

ロケーション・イベント・サーバーとは、ポジショニング・サービス・プロバイダからのロケーション関連情報の取出し、ロケーション・ベースの条件の評価、条件が満たされた場合のイベントの生成を行うスタンドアロン・プロセスです。ロケーション・イベント・サーバーは、スケジューリングを行うためにモバイル・ポジショニング・コンポーネントおよびリージョン・モデル・コンポーネントと連携します。つまり、条件評価結果が定期的に更新され、条件が満たされた場合は、条件を生成したクライアントにロケーション・イベントが送信されます。

ロケーション・イベント・クライアントとは、ロケーション・ベースの条件を指定し、ロケーション関連情報をレポートするワイヤレス・アプリケーションまたはシステム・コンポーネントです。各ロケーション・イベント・クライアントには、サーバーとクライアントの間の双方向通信を処理するロケーション・イベント・エージェントがあります。ロケーション・イベント・エージェントは、クライアント・インスタンスで作成されたロケーション・ベースの条件を取得し、その条件をサーバー側に登録します。エージェントは、サーバーからロケーション・イベントを受信し、ロケーション・イベント・ハンドラを起動してそのイベントを処理します。また、指定したロケーション条件の評価結果に対するリクエストであるプル問合せをサポートします。

ロケーション・イベントは、条件を生成したクライアントや、1つ以上の他のクライアント、またはその任意の組合せに送信できます。条件がアクティブ化されたとき、アプリケーションではロケーション・イベントを受信する受信者を決定できます。

複数のロケーション・イベント・サーバーおよびロケーション・イベント・クライアントを構成して使用できます。

ロケーション・イベント・クライアントを実装するために、次のJavaクラスが用意されています。

15.4.2 ロケーション・イベント・エージェントの例

例15-36では、ロケーション・イベント・エージェントを作成し、ロケーション・ベースの条件をアクティブ化しています。その結果、通学している学校に関連付けられた地域の外に子供が出ると、その両親にアラートが送信されます。別のロケーション・イベント・エージェント(anotherAgent)では、条件が満たされると生成されるイベントをサーバーから受信します。

例15-36 ロケーション・イベント・エージェント

  try{
      LBEventAgent alertAgent = factory.createLBEventAgent("alertAgent",true);
      LBEventHandler handler = new ALBEventHandlerImpl();
      alertAgent.registerLBEventHandler(handler);
      User parent = factory.createUser(USERNAMEPARENT);
      User child = factory.createUser(USERNAMECHILD);
      LocationPrivacyDomain privacyDomain = new LocationPrivacyDomain();
      LBCondition condition = factory.createLBCondition(LBCondition.MODE_ONCE, null,
         parent, privacyDomain);
      condition.addCriteria(String.valueOf(child.getId()),
         LBCondition.TARGETTYPE_USER,LBCondition.TYPE_OUT,SCHOOL_REGION_ID);
      alertAgent.activateCondition(condition,null,null,"anotherAgent",false);
   }catch(LBEventException e){
 ......
  }

15.4.3 ロケーション・ベースの条件オブジェクト(LBCondition)

ロケーション・ベースの条件(LBCondition)オブジェクトは、ロケーション・ベースの条件を表します。典型的なアラート条件は複数の基準で構成され、それぞれターゲット、基準のタイプ(INまたはOUT)およびリージョン(システム・リージョン、カスタム・リージョン、またはユーザー定義リージョン)を定義します。指定した基準間の関係はANDであり、すべての基準が満たされた場合のみ条件が満たされます。

LBConditionオブジェクトは、条件有効期限および条件評価モードも指定します。条件有効期限は、条件が無効になる時期を示します。条件評価モードは、次のいずれかにする必要があります。

  • 1回のみ評価。最初に条件が満たされると、その条件は再度評価されず、条件ステータスは非アクティブになります。

  • 有効期限まで評価。条件が満たされると、ロケーション・イベントはロケーション・イベント・クライアントに送信されます。条件は、すでに満たされているかどうか、または満たされる回数に関係なく、有効期限までアクティブのままです。条件が満たされ、次には満たされず、再び満たされた場合は、新規のイベントがユーザーに送信されます。(たとえば、条件が「ユーザーSmithはBostonにいる」で、SmithがBostonに入り、Bostonを出て、再びBostonに入った場合、イベントはSmithがBostonに入るたびに送信されます。)

15.4.4 ロケーション・イベント・エージェント・オブジェクト(LBEventAgent)

ロケーション・イベント・エージェント(LBEventAgent)・オブジェクトは、ロケーション・イベント・クライアントにかわってロケーション・イベント・サーバーと通信します。ロケーション・イベント・エージェント・オブジェクトは、次の操作を実行します。

  • ロケーション・ベースの条件をアクティブ化します。

  • ロケーション・ベースの特定の条件が満たされているかどうかに関する問合せをサポートします。

  • ロケーション・イベント・クライアントでロケーション・イベント・ハンドラを登録してスレッドを開始し、ロケーション・イベントをリスニングできるようにします。ロケーション・イベントを受信すると、ロケーション・イベント・ハンドラが起動してイベントを処理します。

  • サーバーからのロケーション・ベースの条件を解除します。

各ロケーション・イベント・エージェントには名前およびメッセージ・チャネルがあります。ロケーション・イベント・クライアントで各ロケーション・イベント・エージェントを作成するとき、他のエージェントがその新規のエージェントと同じ名前を共有できるかどうかを指定できます。同じ名前のロケーション・イベント・エージェントは同じメッセージ・チャネルを共有します。つまり、そのメッセージ・チャネルに送信されたロケーション・イベントは、同じ名前のロケーション・イベント・エージェント間に分散されます。

ロケーション・ベースの条件がアクティブ化されると、条件の情報がロケーション・イベント・サーバーに送信され、サーバーは条件の評価を開始します。evaluationModeパラメータがactivateConditionメソッドに渡された場合、そのパラメータの値はLBConditionオブジェクトで定義された評価モードより優先されます。RecipientAgentパラメータがactivateConditionメソッドに渡された場合、そのパラメータによって受信者エージェントの名前が指定されます。つまり、条件は1つのエージェントで作成でき、その条件が満たされる場合、イベントは別のエージェントに送信できます。

ロケーション・イベント・エージェントのisSatisfiedメソッドは、特定の条件が満たされているかどうかをチェックします。条件がアクティブでない場合は、isSatisfiedメソッドによって条件評価が開始され、これには少し時間(条件の複雑さに応じて、数秒から数分)がかかる場合があります。checkStatusNoWaitメソッドも、特定の条件が満たされているかどうかをチェックしますが、条件がアクティブでない場合、条件評価はアクティブ化されません。

15.4.5 ロケーション・イベント・ハンドラ・オブジェクト(LBEventHandler)

ロケーション・イベント・ハンドラ(LBEventHandler)・オブジェクトは、公開インタフェースです。アプリケーション開発者は、ハンドラのインタフェースを実装し、ロケーション・イベント・エージェントに登録します。実装はスレッド・セーフにする必要があります。ロケーション・イベント・ハンドラは、ロケーション・イベントの処理を行います。

ロケーション・イベント・エージェントがロケーション・イベントを受信すると、そのエージェントに登録されているロケーション・イベント・ハンドラのhandleLocationEventメソッドが起動されます。handleLocationEventメソッドは、ロケーション・ベースの条件を一意に識別する条件ID、条件が満たされているかどうか、エラーがあるかどうかを指定するイベント型、およびイベントが生成された時刻を受け取ります。

15.4.6 ロケーション・イベント・サーバーの構成オプション

Wirelessシステム・マネージャを使用してロケーション・イベント・サーバーを構成する手順は、次のとおりです。

  1. Wirelessサーバーの「システム」タブのページで、「サイト管理」をクリックします。

  2. 「コンポーネント構成」をクリックして展開します。

  3. 「関連ロケーション」の下で、「ロケーション・イベント・サーバー」をクリックします。

ロケーション・イベント・サーバーでは、次の構成オプションを使用できます。選択したオプションは、ロケーション・イベント・クライアントのアプリケーションの動作とパフォーマンスに影響を与えます。

  • 待機なしプル・リクエストのデフォルト有効期間(秒)

    ロケーション・イベント・エージェントでは、checkStatusNoWaitメソッドを使用して、ロケーション・イベント・サーバーから待機なしで結果をプルできます。待機なしプル・リクエストの有効期間によって、プルされた結果の有効期間、および現在有効とみなされるかどうかが判断されます。有効期間内に生成された結果は、有効とみなされます。プルされた結果が有効でない場合、待機なしプル・リクエストは、サーバーによる新規の結果の生成を待機しません。たとえば、有効期間が600秒(10分)で、ユーザーの位置の最新レポートが11分前であった場合、そのポジショニング・レポートは有効とはみなされず、checkStatusNoWaitメソッドは待機せずに戻ります。

    有効期間が長いほど、ポジショニング・レポートが有効とみなされる可能性は高くなります。ただし、アプリケーションで最新のポジショニング情報が必要とされる場合は、短い有効期間が必要になります。

  • プル・リクエストのデフォルト有効期間(秒)

    ロケーション・イベント・エージェントでは、isSatisfiedメソッドを使用して、ロケーション・イベント・サーバーから結果をプルできます。プル・リクエストの有効期間によって、プルされた結果が有効かどうかが判断されます。有効期間内に生成された結果は、有効とみなされます。プルされた結果が有効でない場合、プル・リクエストは、サーバーが新規の結果を生成するまで待機します。たとえば、有効期間が600秒(10分)で、ユーザーの位置の最新レポートが11分前であった場合、そのポジショニング・レポートは有効とはみなされず、isSatisfiedメソッドは、ユーザーの位置のレポートが次に受信されるまで待機します。

    有効期間が長いほど、ポジショニング・レポートが有効とみなされる可能性は高くなり、isSatisfiedメソッドがポジショニング情報を受け入れて戻る可能性も高くなるため、アプリケーションを続行できます。ただし、アプリケーションで最新のポジショニング情報が必要とされる場合は、isSatisfiedメソッドが新規情報を待機する間、アプリケーションを遅延させても、短い有効期間が必要になります。

  • ロケーション・イベント・リスナーのデフォルト数

    ロケーション・イベント・エージェントには、ロケーション・ベースのイベントをリスニングする複数のリスナーを設定できます。この設定では、1つのロケーション・イベント・エージェントが使用するリスナーの数を指定します。

    この値は、システムのワークロードに基づいて指定する必要があります。多数のロケーション・ベースの条件が作成および処理される場合は、1より大きい値(5や10など)が適切と考えられます。ただし、少数のロケーション・ベースの条件が作成および処理される場合は、1つのロケーション・イベント・リスナーで十分です。アプリケーションでは、このデフォルトを上書きできます。

各ロケーション・イベント・サーバーには、次の値を指定できます。

  • ポジショニング・スケジューラの数

    各ロケーション・イベント・サーバーには、ロケーション・ベースの条件を処理する1つ以上のポジショニング・スケジューラを設定できます。この設定では、各ロケーション・イベント・サーバーのポジショニング・スケジューラの数を指定します。

    この値は、システムのワークロードに基づいて指定する必要があります。多数のロケーション・ベースの条件が作成および処理される場合は、1より大きい値(5や10など)が適切と考えられます。ただし、少数のロケーション・ベースの条件が作成および処理される場合は、1つのポジショニング・スケジューラで十分です。システム管理者はロケーション・イベント・サーバーのパフォーマンスを監視し、それに従ってこの値を調整できます。

15.5 リージョン・モデル・ツールの使用

リージョン・モデル・ツールを使用すると、ワイヤレス・ポータル・サービスの管理者はリージョンを管理し、サービスまたはフォルダをロケーション依存にすることができます。作成時に、サービスまたはフォルダにシステム・リージョンまたは以前に作成したカスタム・リージョンを関連付けて、ロケーション依存として指定できます。ロケーション依存サービスまたはフォルダがユーザーのポータルに表示されるのは、そのユーザーの(自動モバイル・ポジショニングまたはデフォルト・ロケーション・マークからの)現在のロケーションが、指定したリージョン内にある場合のみです。

リージョンとは、単なる地理的エンティティ、つまりロケーションです。リージョンは(町村名のように)小さくても(国のように)大きくてもかまいません。リージョンは、対象となる住所とロケーション(空港や博物館など)の場合と同様にポイントで表すか、州や国の場合と同様にポリゴンで表すことができます。

15.5.1 リージョン・モデリングを使用したサービスとフォルダの可視性

次のように、特定のリージョンを様々なアプリケーションおよびサービスに対して定義できます。

  • 選択した都会エリアのシティ・ガイド。このエリア内のユーザーは、関連するサービスと情報(レストラン・リストや広告など)のみを受信します。

  • 特定のランキングを持つ大学、または特定の領域の専門大学。入学希望者と両親は、これらのロケーションに関する情報を受信できます。

  • 1つの都市または複数の州にまたがるエリア内の美術館。美術愛好家は美術館めぐりのプランを立てることができます。

会社が多数の専門サービスを提供しており、ユーザーがリージョンに連結された個々のサービスにサブスクライブして支払えるようにする必要があるとします。たとえば、あるユーザーはアメリカ全体のシティ・ガイドにサブスクライブし、別のユーザーは南東部の州のシティ・ガイドにのみサブスクライブできます。

このシティ・ガイドの例を実装する手順は、次のとおりです。

  1. 静的でロケーション依存でないフォルダCity_guideを作成します。

  2. City_guideフォルダの下に、ボストン、サンフランシスコおよびカリフォルニアのシティ・ガイド・サービスを作成します。

  3. ある都市の住所にデフォルト・ロケーション・マークを設定します。この住所がボストンにある場合、ユーザーにはボストンのシティ・ガイドが表示され、サンフランシスコにある場合はサンフランシスコとカリフォルニアのガイドが表示されます。

別の使用例として、複数のサービスが1つのリージョンに関連している可能性があります。その場合は、ロケーション依存のフォルダを作成し、(各サービスをリージョンのロケーション依存として指定するかわりに)そのフォルダに関連サービスを置きます。たとえば、ATMロケータ、Flight Gate Information、Airport Parking InformationおよびTaxi Finderの各サービスをリージョンAirportに関連付けており、Printer Finder、Conference Room SchedulerおよびCafeteria Menuの各サービスをリージョンOfficeに関連付けているとします。この場合は、2つのロケーション依存フォルダAirportおよびOfficeを作成し、それぞれAirportおよびOfficeリージョンに関連付けることができます。

15.5.2 フォルダとリージョン階層

リージョンはフォルダに格納されます。フォルダは階層形式で編成できます(つまり、フォルダにフォルダを入れることができます)。2つのトップレベル・フォルダSystem-Defined RegionsおよびCustom Regionsがあります。

  • システム定義リージョンは、定義済エリア、つまり国を含む大陸の階層形式で配置されます。アメリカにはさらに州が含まれ、州には郵便番号、郡および市が含まれます。

  • カスタム・リージョンは、ユーザーが住所を1つ入力するか、他の1つ以上のリージョン(システム定義またはカスタム)を選択して作成します。

15.5.3 アプリケーションへのリージョンの関連付け

ロケーション依存にするアプリケーションを指定する場合は、そのサービスを適用するリージョンまたはそのサービスが関連するリージョンを指定する必要があります。リージョンを指定するには、それがシステム定義リージョンまたはカスタム・リージョンとして存在している必要があります。カスタム・リージョンの場合は、それがリージョン・モデル・ツールを使用して作成されている必要があります。

アプリケーションをロケーション依存にし、リージョン・モデル・ツールを使用する手順は、次のとおりです。

  1. Wirelessサーバーの「サービス」タブのページで、「アプリケーション」タブをクリックします(選択されていない場合)。

  2. ロケーション依存の(またはロケーション依存にする)アプリケーションを選択し、「編集」をクリックします。

  3. 「追加情報」をクリックします。

  4. 「ロケーションに依存」を有効化 (選択)します。

  5. リージョン・モデル・ツールを起動するには、「リージョン名」ボックスの横にあるフラッシュライト・アイコンをクリックします。

図15-5のように、リージョン・モデル・ツールが表示されます。

図15-5 リージョン・モデル・ツールのインタフェース

図15-5の説明は次のとおりです
図15-5「リージョン・モデル・ツールのインタフェース」の説明

Webブラウザ・ウィンドウには、最初にリージョン階層のトップレベルとシステム・リージョンおよびカスタム・リージョンの2つのエントリが表示されます。リージョンを検索して、表示するリージョン、またはコレクションに追加してカスタム・リージョンの作成に使用するリージョンを選択できます。

システム・リージョンまたはカスタム・リージョンの表示の中でリージョンを検索するには、名前に含まれる文字列を入力して名前で検索する方法と、番号を入力してID(リージョンID)で検索する方法があります。また、選択対象としてすべてのリージョン、または現行の(現在選択している)リージョンに含まれるリージョンのみを指定し、「実行」をクリックします。

操作の実行対象となるリージョンを選択するには、アイコンと名前の左にあるボックスをクリックします。(項目を選択解除するには、ボックスをクリックします。)「すべて選択」をクリックすると、現在表示されているすべてのリージョンを選択でき、「選択解除」をクリックすると、現在表示されているすべてのリージョンを選択解除できます。

選択した1つ以上のリージョンに対して操作を実行するには、表15-61に示すコマンド・テキストのリンクまたはボタンをクリックします。

表15-61 リージョン・モデル・ツールの操作

操作内容 クリックするリンクまたはボタン

選択したリージョンを表示の下部にあるリージョンのコレクションに追加する

「コレクションに追加」。

選択したリージョンを示すマップを表示する

「表示」。

表示の下部にあるリージョンのコレクションからカスタム・リージョンを作成する

「コレクションから作成」。一連のページが表示され、リージョン階層内での位置とカスタム・リージョン名を指定できます。

入力した番地からカスタム・リージョンを作成する

「アドレスから作成」。一連のページが表示され、住所、リージョン階層内での位置とカスタム・リージョン名を指定できます。

リージョンの編成に使用するフォルダを作成する

「フォルダの作成」。一連のページが表示され、リージョン階層内でフォルダを下に作成する位置とフォルダ名を指定できます。

リージョンまたは現行のコレクションの表示内で、前または次のエントリ・セットにジャンプする

「戻る」または「次へ」

リージョン階層内で上へ1レベル以上ジャンプする

ページ上部にある現行の階層の行で必要なレベルの名前。たとえば、この行(リンクである最後の項目を除くすべての項目)は、「リージョン」→「システム定義リージョン」→「NORTH AMERICA」→「USA」→「カリフォルニア」のように表示されます。

画面に関するヘルプを取得する

「ヘルプ」。


15.5.4 リージョン・データのロードと更新

リージョン・モデル・ツールは、アメリカに関する広範囲なデータ・セットおよび多数の国のデータとともにインストールされます。ただし、リージョン・データが格納されている表に行を追加すると、他の国、州、都市などのデータを追加できます。たとえば、STATE表にインドの州ごとに1行を追加できます。操作の意味を理解して慎重に行えば、これらの表内で特定のデータを変更することもできます。たとえば、特定の都市または州のDESCRIPTION列を編集できます。

15.5.4.1 リージョン・データの表

リージョン・データは、表15-62に示すOracleAS Wirelessリポジトリ内のテーブルに格納されます。

表15-62 リージョン・データの表

表名 格納される情報

CONTINENT

大陸

COUNTRY

STATE

COUNTY

CITY

都市

POSTALCODE

郵便番号

USERDEFINED

カスタム・リージョン


これらの表の中から任意の表の定義を表示するには、SQL文のDESCRIBEを使用します。例15-37に、DESCRIBE文の出力内容(関連するすべての表の情報)を示します。

例15-37 リージョン・データ表の定義

SQL> DESCRIBE continent;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                        NOT NULL NUMBER
 NAME                                               VARCHAR2(100)
 REFCNT                                             NUMBER
 DESCRIPTION                                        VARCHAR2(2000)
 GEOMETRY                                           MDSYS.SDO_GEOMETRY

SQL> DESCRIBE country;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                        NOT NULL NUMBER
 NAME                                               VARCHAR2(300)
 REFCNT                                             NUMBER
 CONT_ID                                            NUMBER
 DESCRIPTION                                        VARCHAR2(2000)
 GEOMETRY                                           MDSYS.SDO_GEOMETRY

SQL> DESCRIBE state;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                        NOT NULL NUMBER
 NAME                                               VARCHAR2(400)
 REFCNT                                             NUMBER
 ABBR                                               VARCHAR2(32)
 CONT_ID                                            NUMBER
 COUNTRY_ID                                         NUMBER
 DESCRIPTION                                        VARCHAR2(2000)
 GEOMETRY                                           MDSYS.SDO_GEOMETRY

SQL> DESCRIBE county;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                        NOT NULL NUMBER
 NAME                                               VARCHAR2(400)
 REFCNT                                             NUMBER
 CONT_ID                                            NUMBER
 COUNTRY_ID                                         NUMBER
 STATE_ID                                           NUMBER
 DESCRIPTION                                        VARCHAR2(2000)
 GEOMETRY                                           MDSYS.SDO_GEOMETRY

SQL> DESCRIBE city;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                        NOT NULL NUMBER
 NAME                                               VARCHAR2(400)
 REFCNT                                             NUMBER
 CONT_ID                                            NUMBER
 COUNTRY_ID                                         NUMBER
 STATE_ID                                           NUMBER
 DESCRIPTION                                        VARCHAR2(2000)
 GEOMETRY                                           MDSYS.SDO_GEOMETRY
 MIN_LON                                            NUMBER
 MIN_LAT                                            NUMBER
 MAX_LON                                            NUMBER
 MAX_LAT                                            NUMBER

SQL> DESCRIBE postalcode;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                        NOT NULL NUMBER
 NAME                                               VARCHAR2(400)
 REFCNT                                             NUMBER
 CONT_ID                                            NUMBER
 COUNTRY_ID                                         NUMBER
 STATE_ID                                           NUMBER
 DESCRIPTION                                        VARCHAR2(2000)
 GEOMETRY                                           MDSYS.SDO_GEOMETRY

SQL> DESCRIBE userdefined;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                        NOT NULL NUMBER
 NAME                                               VARCHAR2(200)
 REFCNT                                             NUMBER
 TYPE                                               NUMBER
 PARENT_FOLDER_ID                                   NUMBER
 DESCRIPTION                                        VARCHAR2(2000)
 GEOMETRY                                           MDSYS.SDO_GEOMETRY

15.5.4.2 リージョン表へのデータの挿入

SQL文INSERTを使用すると、リージョン表に新規の行を追加できます。リージョン・データの挿入時には、次の考慮事項が適用されます。

  • 新規の行を挿入するたびに、例15-38のようにidseq.nextvalを使用してID列の値を生成する必要があります。idseq順序はインストール中に自動的に作成されます。したがって、作成しないでください。

  • 行の挿入時には、REFCNT列を0(ゼロ)に設定する必要があります。REFCNT列には、リージョンに関連付けられているサービス数の参照カウントが含まれています。この値は、サービスがリージョンに関連付けられると自動的に増やされ、リージョンとの関連付けが解除されるか、サービスが削除されると減らされます。REFCNTが0(ゼロ)以外の値になっているリージョンは削除できません。

  • デフォルトのリージョン階層を使用しない国について、郵便番号、都市または郡のデータを挿入する場合は、POSTALCODE、CITYまたはCOUNTY表でSTATE_IDとして0(ゼロ)を指定します。

  • GEOMETRY列の値には、MDSYS.SDO_GEOMETRY型の有効なOracle Spatialジオメトリを指定する必要があります。SDO_GTYPEには4桁の値を指定し、SRID(座標系)の値には8307(WGS-84経度/緯度書式の場合)を指定してください。SRID値が現在は8307でない場合は、リージョン・データ表に挿入する前に、ジオメトリをその書式に変換する必要があります。空間データ型、座標系および座標系の変換の詳細は、『Oracle Spatialユーザーズ・ガイドおよびリファレンス』を参照してください。

例15-38に、CITY表にマサチューセッツ州コンコードの1行を挿入するINSERT文を示します。この例は、コンコードを表すジオメトリが別の表MY_CITIESに存在する場合を想定しています。

例15-38 都市の挿入

DECLARE
  city_geom MDSYS.SDO_GEOMETRY;

BEGIN

-- Populate geometry variable with city geometry from another table.
SELECT m.geometry into city_geom FROM my_cities m
  WHERE m.name = 'Concord';

-- Insert into the CITY table.
INSERT INTO CITY VALUES (
   idseq.nextval,
   'Concord',
   0,
   5004, -- continent ID for North America
   5006, -- country ID for USA
   5028, -- state ID for Massachusetts
   'The historic town of Concord',
   city_geom,
   -71.35, -- minimum longitude
   42.46, -- minimum latitude
   -71.34, -- maximum longitude
   42.47); -- maximum latitude
END;
/

CITY表内で、経度と緯度の最小値と最大値は必須であり、トラフィック・サポート・サービスで使用されます。経度と緯度の最小値では境界となる四角形の左下隅が識別され、経度と緯度の最大値では右上隅が識別されます。

15.5.5 Region Modeling API

リージョン・モデル・ツールはRegion Modeling APIに基づいています。このAPIは、oracle.panama.spatial.regionパッケージのRegionModelインタフェースを介して実装されます。RegionModelインタフェースには、郵便番号、州および国を取得するメソッドと、リージョン間の各種の相互作用を判別するメソッドが含まれています。

15.6 外部コンテンツ・プロバイダの統合

OracleAS Wirelessは、ジオコーディング、運転方向、ビジネス・ディレクトリ(イエロー・ページ)サービスおよびマッピングなど、多数のロケーション関連サービスへのアクセスをサポートしています。多くの場合、サービスを直接実行せず、外部プロバイダに依存しています。この項では、プロバイダが実装できる機能およびOracleAS Wirelessと通信するためのインタフェースのオプションについて説明します。

外部プロバイダは、各自が提供するロケーション・ベースのサービスのタイプごとにカスタム・サービス・プロキシを作成することによって、OracleAS Wirelessと自社の製品を統合できます。サービス・プロキシは、共通のインタフェースを実装するJavaクラスで、各サービス(ジオコーディング、マッピング、ルーティング、トラフィック、イエロー・ページ)に1つのインタフェースがあります。サービス・プロキシは、プロバイダのサーバーではなく、OracleAS Wirelessと同じシステム上で実行されます。

サービス・プロキシは、プロバイダのサーバーと、Oracleロケーション・サービスが指定したインタフェースの間で変換する必要があります。また、必要な内部インフラストラクチャを提供するために、オラクル社が提供するクラスを拡張する必要があります。

サービスのタイプ(ジオコーディング、マッピングなど)に応じて、次のリストから適切なインタフェースを実装する必要があります。

oracle.panama.spatial.geocoder.Geocoder
oracle.panama.spatial.mapper.Mapper
oracle.panama.spatial.router.Router
oracle.panama.spatial.traffic.TrafficReporter
oracle.panama.spatial.yp.YPFinderSimple

インタフェース内には、15.6.2項で説明するように、必ず実装する必要があるファンクション、実装可能なファンクションおよび実装する必要のないファンクションがあります。

サービスのタイプ(ジオコーディング、マッピングなど)に応じて、次のリストから適切なインタフェースを拡張する必要があります。

oracle.panama.spatial.core.geocoder.GeocoderImplXMLImpersonator
oracle.panama.spatial.core.mapper.MapperImplXMLImpersonator
oracle.panama.spatial.core.router.RouterImplXMLImpersonator
oracle.panama.spatial.core.traffic.TrafficReporterImplXMLImpersonator
oracle.panama.spatial.core.yp.YPFinderSimpleImplXMLImpersonator

たとえば、oracle.panama.spatial.geocoder.Geocoderを実装する場合は、次のインタフェースも拡張する必要があります。

oracle.panama.spatial.core.geocoder.GeocoderImplXMLImpersonator

15.6.1 ファイアウォール内から外部URLへのアクセス

サービス・プロキシは、OracleAS Wirelessサーバー上に配置されますが、このサーバーがファイアウォールの内側にある場合があります。これに対して、コンテンツ・プロバイダは通常、ファイアウォールの外側にあります。この場合、プロキシでOracleAS Wirelessファイアウォール・プロキシ設定を使用する必要があります(ロケーション・サービス・プロキシ設定とは異なります)。次の例は、ファイアウォール・プロキシの設定方法の抜粋です(重要な行は太字で表示されています)。

URL u = …

  try
  {
    URLConnection c = u.openConnection();
    ProxyFirewall.setProxyAuthorization(c);
    c.connect();
    BufferedReader
      bReader = new BufferedReader(
        new InputStreamReader(
          c.getInputStream()));
    ...
  }
  catch(...) { ... }
  ...

15.6.2 実装するファンクション

サービス・プロキシに使用可能なファンクションには、次の3つのカテゴリがあります。

  • 実装必須: 各プロキシの主要な部分として実装が必要なファンクション。

  • 実装可能: オプションで実装可能なファンクション(たとえば、自社の製品を競合品と差別化する機能を提供する場合)。

  • 実装禁止: フレームワークによって実装済で、プロキシでは実装する必要のないファンクション。

使用可能な各ファンクションについては、各インタフェースのJavadocドキュメントを参照してください。

この項では、各タイプのサービス(ジオコーディング、マッピングなど)の各カテゴリに該当するファンクションを、クラス名を太字にして示します。ただし、サービスのタイプによっては、実装可能カテゴリに該当するファンクションがありません。

15.6.2.1 ジオコーディング・サービス: 使用可能なファンクション

ジオコーディング・サービス・プロキシでは、次のファンクションの実装が必須です。

public Location[] geocodeAddress(Location inp, String matchMode);

ジオコーディング・サービス・プロキシでは、次のファンクションの実装が可能です。

public Location[][] geocodeAddresses(Location[] inp, String matchMode);
public Location[] reverseGeocodePoint(Point pt);

ジオコーディング・サービス・プロキシでは、次のファンクションは実装禁止です。

public String xmlGeocode(Document xmlRequest);

15.6.2.2 マッピング・サービス: 使用可能なファンクション

マッピング・サービス・プロキシでは、次のファンクションの実装が必須です。

public String getMapURL(Point[] locations, ImageFormats fileType, double minLon, double maxLon, double minLat, double maxLat, int width, int height, boolean allowTurning);

マッピング・サービス・プロキシでは、次のファンクションは実装禁止です。

public String getMapURL(Point[] locations, ImageFormats fileType, int width, int height, boolean allowTurning);
public String getMapURL(Point location, ImageFormats fileType, int width, int height, boolean allowTurning);
public String getMapURL(RoutingResult route, boolean allowTurning);
public String getMapURL(Maneuver man, boolean allowTurning);
public String getMapURL(Point location, ImageFormats fileType, double minLon, double maxLon, double minLat, double maxLat, int width, int height, boolean allowTurning);
public String[][] getMapURLs(Point[] locations, ImageFormats fileType, int width, int height, int subdivisionLevel, boolean allowTurning);
public String[][] getMapURLs(Point[] locations, ImageFormats fileType, double minLon, double maxLon, double minLat, double maxLat, int width, int height, int subdivisionLevel, boolean allowTurning);
public String[][] getMapURLs(Point location, ImageFormats fileType, int width, int height, int subdivisionLevel, boolean allowTurning);
public String[][] getMapURLs(Point location, ImageFormats fileType, double minLon, double maxLon, double minLat, double maxLat, int width, int height, int subdivisionLevel, boolean allowTurning);
public String[][] getMapURLs(RoutingResult route, int subdivisionLevel, boolean allowTurning);
public String[][] getMapURLs(Maneuver man, int subdivisionLevel, boolean allowTurning);
public String xmlMap(Document xmlRequest);

15.6.2.3 ルーティング・サービス: 使用可能なファンクション

ルーティング・サービス・プロキシでは、次のファンクションの実装が必須です。

public RoutingResult computeRoute(Point source, Point destination, Point[] viaPoints, RoutingSettings opt, Locale locale);

ルーティング・サービス・プロキシでは、次のファンクションの実装が可能です。

public RoutingResult computeRoute(Location source, Location destination, Location[] viaPoints, RoutingSettings opt, Locale locale);
public Ranking rankByDrivingDistance(Point source, Point[] locations);

ルーティング・サービス・プロキシでは、次のファンクションは実装禁止です。

public String xmlRoute(Document xmlRequest);

15.6.2.4 トラフィック・サービス: 使用可能なファンクション

トラフィック・サービス・プロキシでは、次のファンクションの実装が必須です。

public TrafficReport getReportViaCity(CityInfo city) throws LBSException;
public TrafficReport getReportViaLocation(Point location, double radius, int unit, CityInfo city) throws LBSException;
public TrafficReport getReportViaRoute(RouteInfo route, CityInfo city) throws LBSException;
public TrafficReport getReportViaRoute(RouteInfo route, String direction, CityInfo city) throws LBSException;

トラフィック・サービス・プロキシでは、次のファンクションは実装禁止です。

public TrafficCityManager getCityManager();
public TrafficReport getReportViaLocation(Point location, double radius, int unit) throws LBSException;
public TrafficReport getReportViaAddress(Location address, double radius, int unit) throws LBSException;
public String xmlTraffic(Document xmlRequest) throws LBSException;

15.6.2.5 ビジネス・ディレクトリ(YP)サービス: 使用可能なファンクション

ビジネス・ディレクトリ(YP)サービス・プロキシでは、次のファンクションの実装が必須です。

public YPBusiness[] getBusinessesInCity(String businessName, String country, String state, String city, Locale locale);
public YPBusiness[] getBusinessesInState(String businessName, String country, String state, Locale locale);

ビジネス・ディレクトリ(YP)サービス・プロキシでは、次のファンクションの実装が可能です。

public Boolean anyBusinessesInCity(YPCategory category, String country, String state, String city);
public Boolean anyBusinessesInState(YPCategory category, String country, String state);
public Boolean anyBusinessesInPCode(YPCategory category, String country, String postalCode);
public Boolean anyBusinessesInRadius(YPCategory category, Point location, double metersRadius);
public YPBusiness[] getBusinessesInRadius(String businessName, Point location, double metersRadius, Locale locale);
public YPBusiness[] getBusinessesInPCode(String businessName, String country, String postalCode, Locale locale);
public YPBusiness[] getBusinessesInCity(YPCategory category, String country, String state, String city, Locale locale);
public YPBusiness[] getBusinessesInState(YPCategory category, String country, String state, Locale locale);
public YPBusiness[] getBusinessesInRadius(YPCategory category, Point location, double metersRadius, Locale locale);
public YPBusiness[] getBusinessesInPCode(YPCategory category, String country, String postalCode, Locale locale);
public YPBusiness[] getNearestNBusinesses(String businessName, Point location, int n, Locale locale);
public YPBusiness[] getNearestNBusinesses(YPCategory category, Point location, int n, Locale locale);

ビジネス・ディレクトリ(YP)サービス・プロキシでは、次のファンクションは実装禁止です。

public Boolean anyBusinessesInSameCity(YPCategory category, Location loc);
public Boolean anyBusinessesInSameState(YPCategory category, Location loc);
public Boolean anyBusinessesInSamePCode(YPCategory category, Location loc);
public YPBusiness[] getBusinessesInSameCity(String businessName, Location loc, Locale locale);
public YPBusiness[] getBusinessesInSameState(String businessName, Location loc, Locale locale);
public YPBusiness[] getBusinessesInSamePCode(String businessName, Location loc, Locale locale);
public YPBusiness[] getBusinessesInSameCity(YPCategory category, Location loc, Locale locale);
public YPBusiness[] getBusinessesInSameState(YPCategory category, Location loc, Locale locale);
public YPBusiness[] getBusinessesInSamePCode(YPCategory category, Location loc, Locale locale);
public YPBusiness[] getBusinessesInSameCity(String businessName, YPCategory category, Location loc, Locale locale);
public YPBusiness[] getBusinessesInSameState(String businessName, YPCategory category, Location loc, Locale locale);
public YPBusiness[] getBusinessesInSamePCode(String businessName, YPCategory category, Location loc, Locale locale);
public YPBusiness[] getBusinessesInCity(String businessName, YPCategory category, String country, String state, String city, Locale locale);
public YPBusiness[] getBusinessesInState(String businessName, YPCategory category, String country, String state, Locale locale);
public YPBusiness[] getBusinessesInRadius(String businessName, YPCategory category, Point location, double metersRadius, Locale locale);
public YPBusiness[] getBusinessesInPCode(String businessName, YPCategory category, String country, String postalCode, Locale locale);
public YPBusiness[] getNearestNBusinesses(String businessName, YPCategory category, Point location, int n, Locale locale);
public String xmlYP(Document xmlRequest);

15.7 モバイル・ポジショニング・プロバイダの統合

この項では、外部モバイル・ポジショニング・プロバイダをOracleAS Wirelessに統合するための、サービス・プロキシの実装方法について説明します。モバイル・ポジショニング・プロバイダを統合する前に、次の事項を必ず理解してください。

モバイル・ポジショニングには、次のステップが含まれています。

  1. ロケーションのプライバシ設定を調べ、ポジショニング・リクエストを許可するかどうかを判断します。

  2. プロバイダ・セレクタ・フックを使用して、ユーザーのモバイル・ステーションIDを取得します(15.3.2.4項を参照)。システム・デフォルトでは、ユーザー・プロファイルのモバイル・ステーションIDのフィールドが使用されます。

  3. ロケーション・キャッシュを調べます。ロケーション・キャッシュが使用可能で、キャッシュからリクエストが満たせる場合は、キャッシュで見つけたロケーションを戻し、ステップ4をスキップします。

  4. キャッシュからロケーションが満たされない場合は、1つ以上のモバイル・ポジショニング・プロキシを起動して、ユーザーの現在のロケーションを取得します。

前述のリストのステップ4(1つ以上のモバイル・ポジショニング・プロバイダを起動)には、次の固有の操作が含まれます。

  1. システム構成ファイルのモバイル・ポジショニング・プロバイダに関する情報を調べます。この情報には、プロバイダ名、プロキシの実装クラス名、バージョン番号、モバイル・ポジショニング・サーバーのURL、モバイル・ポジショニング・ユーザーの名前とパスワードおよびすべての追加パラメータが含まれます。

  2. プロキシのクラスをインスタンス化します。

  3. そのクラスのrequestPosition() methodを起動して、モバイル・ステーションのロケーションを取得します。

15.7.1 モバイル・ポジショニング・プロキシの実装

モバイル・ポジショニング・プロバイダを統合するには、oracle.panama.mp.Positionerインタフェースを実装する必要があります。

クラスのコンストラクタは、次の書式にする必要があります。

public MyMPImpl (String  providerName,
                 String  providerImpl,
                 String  version,
                 String  url,
                 String  username,
                 String  password,
                 String  parameters);

モバイル・ポジショニング・フレームワークは、この情報をシステム構成から読み取り、プロキシ実装を構成するために使用します。クラスはその情報をクラス変数に格納し、後で使用します。

コンストラクタの他に、クラスは次のメソッドを実装する必要があります。

public PositionResult    requestPosition ( String   msid);
public PositionResult    requestPosition ( String   msid, PositionQoS qos);
public PositionResult[]  requestPosition ( String[] msids);
public PositionResult[]  requestPosition ( String[] msids, PositionQoS qos);

第1のメソッドは、モバイル・ステーションIDをパラメータとして取得します。

第2のメソッドは、モバイル・ステーションIDおよび位置の品質(PositionQoS)のパラメータを取得します。PositionQoSパラメータは、モバイル・ステーションのロケーションをキャッシュから供給できる最大許容経過時間を指定します。たとえば、アプリケーションによっては5分も経過したユーザーのロケーションを受け入れる可能性もあります。プロキシの実装では、ロケーションがすでに存在しているかどうかを判断するロジックがモバイル・ポジショニング・フレームワークに実装されているため、Oracle Application Server Wirelessのロケーション・キャッシュを調べる必要はありません。つまり、システム・キャッシュ内にロケーションが存在し、リクエストを満たしている場合、プロキシは起動しません。プロキシでPositionQoSパラメータを考慮する必要があるのは、実際のモバイル・ポジショニング・プロバイダに同じキャッシュ概念があり、このパラメータを使用できる場合のみです。

第3と第4のメソッドは、それぞれ第1と第2のメソッドに似ていますが、複数のモバイル・ステーションのロケーションをリクエストするために使用されます。実際のモバイル・ポジショニング・プロバイダがバルク・リクエストを処理できる場合、プロキシはこの機能を使用して、1回のコール(たとえば、FORループの使用)で複数のロケーションをリクエストできます。プロバイダが複数のリクエストを処理できない場合、プロキシはプロバイダをロケーションごとに1回、つまり複数回コールする必要があります。

各メソッドは、PositionResultオブジェクト、またはそのオブジェクトの配列を戻します。PositionResultオブジェクトは、モバイル・ステーションの現在のロケーションを表します。PositionResultオブジェクトの詳細は、Javadocドキュメントのoracle.panama.mp.PositionResultクラスおよびoracle.panama.mp.PositionAreaクラスを参照してください。

PositionResultオブジェクトの使用には、次のガイドラインが適用されます。

  • モバイル・ポジショニング・プロバイダが、オブジェクトに1つ以上の値を戻さない場合は、それらの値をnullに設定します。

  • PositionResultオブジェクトにはPositionAreaオブジェクトの配列が含まれます。モバイル・ポジショニング・プロバイダが1つのPositionAreaオブジェクトのみを戻す場合、その1つのオブジェクトも配列に含める必要があります。

oracle.panama.mp.Positionerインタフェースの実装では、例外およびエラーも処理する必要があります(詳細は、15.7.2項を参照)。

15.7.2 モバイル・ポジショニングでの例外およびエラーの処理

この項では、次のいずれかの場合に発生する、実行時のモバイル・ポジショニングのエラーおよび例外の処理に関するガイドラインを示します。

  • プロバイダのレスポンスにエラー・コードおよびエラー・メッセージが含まれる場合。

  • 解析中に例外がスローされた場合。

  • 複数のモバイル・ステーションをポジショニングするリクエスト(15.7.1項で説明した第3および第4のrequestPositionメソッドを使用)で、戻された結果の数とサブスクライバIDの数が一致しない場合。

単一または複数のサブスクライバIDに対するリクエストからのエラーまたは例外については、プロバイダからのエラー・コードおよびエラー・メッセージを調べます。

  • そのエラーが重大なエラーである場合は、即時にnullを戻してフェイルオーバーします。重大なエラーに含まれるのは、認証エラー、XML解析中のエラー、およびプロキシ実装で発生したのではなく、リクエストの再送信で解決不可能なその他のエラーです。

  • エラーが不明サブスクライバIDを示す場合は、エラーID UNKNOWNSUBSCRIBERおよびエラー・メッセージUNKNOWNSUBSCRIBER_STRによって、PositionResultオブジェクトを構成して戻します。エラー・メッセージは、PositionResultオブジェクトでgetErrorMessage()メソッドを使用して、後で取り出せます。

  • その他のエラー・コードについては、プロバイダからのエラーIDおよびエラー・メッセージによって、PositionResultオブジェクトを構成して戻します。