(57)【要約】【課題】位置認識型アプリケーションを開発し使用することを容易にする開発環境を提供すること。【解決手段】位置情報の収集、分析、および表示という、現在は別個のそれぞれ複雑なタスクを組み合わせ、非熟練者が自らのアプリケーションにロケーションサービスやマッピングサービスを組み込めるようになるまで統合することで、機能に富む位置認識型ソフトウェアアプリケーションを開発する。上位プログラミングモデルは、プログラマが位置情報を単に緯度や経度などの未加工の位置データとしてではなく、論理エンティティとして使用できるようにする。デバイス上の様々な位置認識型アプリケーションが、位置データストアおよび地図データストアにアクセスする。各ロケーションアプリケーションが自らの地図ストアを利用するのではなく、複数のアプリケーションは位置に関連する情報を共用する。【選択図】図４
2006153863.tif 000002
【特許請求の範囲】
【請求項１】
位置認識型アプリケーションのためのシステムであって、
デバイス上の様々な位置認識型アプリケーションが共用できる地図情報および位置情報を含むデータストアと、
アイテムの位置を含む少なくとも１つの位置ソースから位置情報を受信し、関心地域に対する前記アイテムの相対位置に応答して位置イベントを生成するように構成されたロケーションマネージャと、
前記データストアに結合され、地図情報を抽出し地図の表示を含む地図動作を管理するように構成され、２つ以上の地図レンダリングエンジンを利用することができるマップマネージャと、
前記ロケーションマネージャおよび前記マップマネージャと結合され、前記位置イベントに応答してイベント駆動型コードを実行し、前記抽出された地図情報と対話するように構成された位置認識型アプリケーションと
を備えることを特徴とする位置認識型アプリケーションのためのシステム。
【請求項２】
前記データストアは位置ストアと地図ストアとを備え、前記地図ストアは地図に関する情報を含み、前記位置ストアは関心地域に関する情報を含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記少なくとも１つの位置ソースは、少なくとも１つの近傍位置ソースと遠隔位置ソースとを含むことを特徴とする請求項１に記載のシステム。
【請求項４】
前記少なくとも１つの位置ソースは、ＧＰＳ受信機、ユーザ入力、電話システム、ＲＦＩＤタグ、およびネットワーク上のデバイスにプッシュまたはプルされた位置データを含むグループから選択されることを特徴とする請求項３に記載のシステム。
【請求項５】
前記ロケーションマネージャはさらに、１個からＮ個のアイテムについて位置情報を管理するように構成されることを特徴とする請求項３に記載のシステム。
【請求項６】
前記位置イベントの生成は、前記アイテムの位置が前記関心地域に入ったという判断、前記アイテムの位置が前記関心地域を出たという判断、および関心地域内における位置ソースの動きの判断のうちの少なくとも１つのイベントに応答して位置イベントを生成することを含むことを特徴とする請求項１に記載のシステム。
【請求項７】
前記位置認識型アプリケーションはさらに、前記マップマネージャに推奨地図解像度を提供するように構成されることを特徴とする請求項１に記載のシステム。
【請求項８】
前記マップマネージャはさらに、ユーザ入力を受信し、前記ユーザ入力を地図上の位置に変換するように構成されることを特徴とする請求項１に記載のシステム。
【請求項９】
前記位置認識型アプリケーションはさらに、前記マップマネージャに地図上に表示できる少なくとも１つのオブジェクトを提供するように構成されることを特徴とする請求項７に記載のシステム。
【請求項１０】
前記マップマネージャは前記位置認識型アプリケーションに１組の地図を供給し、位置認識型アプリケーションは重み付き判断基準に基づいて供給された１組の地図から表示すべき地図を判断することを特徴とする請求項９に記載のシステム。
【請求項１１】
前記データストアはさらに、動的プロビジョニングができるように構成されることを特徴とする請求項１に記載のシステム。
【請求項１２】
前記地図情報は、ＸＭＬ表現を使用した各地図の表現を含むことを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記表現は、地図の投影図法、解像度、地図を表示するのに使用した地図レンダリングエンジンの指示、および前記地図が含む地域を含むことを特徴とする請求項１１に記載のシステム。
【請求項１４】
位置認識型アプリケーションのためのコンピュータ実行方法であって、
アイテムがいつ関心地域を出入りし、関心地域内を動くかを判断するステップと、
前記判断に応答して位置イベントを生成するステップと、
前記イベントに応答して位置認識型アプリケーションが供給するイベント駆動型コードを実行するステップと、
地図ストアから、他の位置認識型アプリケーションが共用できる地図を選択するステップと、
少なくとも２つの地図レンダリングエンジンから選択された地図レンダリングエンジンを使用して前記地図を表示するステップと
を含むことを特徴とする方法。
【請求項１５】
地図上の予め定義された地域である関心地域を画定するステップをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記アイテムがいつ関心地域を出入りするかを判断するステップは、少なくとも１つの位置ソースから位置情報を取得し、前記アイテムが前記関心地域内にあるかどうかを判断するステップを含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
位置イベントを生成するステップは、前記アイテムの位置が前記関心地域に入ったという判断、前記アイテムの位置が前記関心地域を出たという判断、および前記アイテムの位置が関心地域内で指定された距離だけ動いたという判断のうちの少なくとも１つのイベントに応答して位置イベントを生成するステップを含むことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記地図にオーバーレイするために前記地図レンダリングエンジンに少なくとも１つのオブジェクトを供給するステップをさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１９】
前記地図ストアに対して動的プロビジョニングを行うステップをさらに含むことを特徴とする請求項１５に記載の方法。
【請求項２０】
前記地図は、ＸＭＬ表現を使用したその地図の表現を含むことを特徴とする請求項１５に記載の方法。
【請求項２１】
前記表現は、地図の投影図法、解像度、地図を表示するのに使用した地図レンダリングエンジンの指示、および前記地図が含む地域を含むことを特徴とする請求項２０に記載の方法。
【請求項２２】
位置認識型アプリケーションのためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、前記命令は
関心地域を画定する命令と、
位置ソースからアイテムの位置を取得し、前記位置を他の位置認識型アプリケーションが共用できる位置ストアに記憶する命令と、
関心地域の１つの中にいつ前記アイテムが存在するかを判断する命令と、
前記アイテムが関心地域の１つの中に存在すると判断されたとき位置イベントを生成する命令と、
前記位置イベントに応答して位置認識型アプリケーションに関連するイベント駆動型コードを実行する命令と、
地図ストアから、他の位置認識型アプリケーションが共用できる地図を選択する命令と、
少なくとも２つの地図レンダリングエンジンから選択された地図レンダリングエンジンを使用して前記地図を表示する命令と
を含むことを特徴とするコンピュータ可読媒体。
【請求項２３】
前記位置認識型アプリケーションが実行された後に関心地域を画定する命令をさらに含むことを特徴とする請求項２２に記載のコンピュータ可読媒体。
【請求項２４】
前記アイテムがいつ関心地域の１つの外に存在するかを判断し、前記アイテムが外に存在するという判断に応答して前記位置イベントを生成する命令をさらに含むことを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項２５】
前記地図にオーバーレイするために前記地図レンダリングエンジンに少なくとも１つのオブジェクトを供給する命令をさらに含むことを特徴とする請求項２２に記載のコンピュータ可読媒体。
【請求項２６】
前記地図ストアに対して動的プロビジョニングを行う命令をさらに含むことを特徴とする請求項２２に記載のコンピュータ可読媒体。
【請求項２７】
前記地図は、ＸＭＬ表現を使用したその地図の表現を含むことを特徴とする請求項２２に記載のコンピュータ可読媒体。
【請求項２８】
前記表現は、地図の投影図法、解像度、地図を表示するのに使用される地図レンダリングエンジンの表示、および前記地図が含む地域を含むことを特徴とする請求項２７に記載のコンピュータ可読媒体。
【請求項２９】
前記地図ストアから前記地図を選択する命令は、位置認識型アプリケーションから受け取った重み付き判断基準に応答して最適な地図を判断する命令を含むことを特徴とする請求項２２に記載のコンピュータ可読媒体。
【請求項３０】
前記地図レンダリングエンジンを使用して前記地図を表示する命令は、レンダリングされる地図の種類に応じて複数の地図レンダリングエンジンを切り替える命令を含むことを特徴とする請求項２２に記載のコンピュータ可読媒体。
【請求項３１】
前記地図レンダリングエンジンを使用して前記地図を表示する命令は、レンダリングされる地図の種類に応じて、メルカトル図法、極射影法、格子投影法およびカスタムな図法のうち少なくとも２つの投影図法から選択された投影図法を選択する命令を含むことを特徴とする請求項３０に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は位置情報を利用するアプリケーションプログラム、システムおよび方法に関する。
【背景技術】
【０００２】
ここ数年、位置情報を利用したアプリケーションがますます多く開発されるようになってきた。これらのロケーションアプリケーションのうちには、マッププログラム、フライトトラッカープログラム、およびナビゲーションプログラムを含むものもある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
これらのアプリケーションの多くは、モバイルコンピューティングデバイス用に開発されている。例えば、都市の中をユーザがナビゲートする助けとなるよう、車載ナビゲーションシステムが開発されている。携帯電話のうちには、ＧＰＳベースのナビゲーションプログラムを含むものもある。しかし、これらのアプリケーションを開発することは非常に困難である。一般に、ポジショニングシステムは緯度や経度などの位置データだけを提供し、その情報を処理し解釈するためにはアプリケーションを必要とする。
【課題を解決するための手段】
【０００４】
本発明のいくつかの実施形態は、位置認識型ソフトウェアアプリケーションの開発および使用を容易にするためのシステムおよび方法に関する。位置情報の収集、分析、および表示という、現在は別個のそれぞれ複雑なタスクを組み合わせ、非熟練者が自らのアプリケーションにロケーションサービスやマッピングサービスを組み込めるようになるまで統合することで、機能に富む位置認識型ソフトウェアアプリケーションを開発する開発者の能力が高まる。
【０００５】
一態様によれば、位置認識型アプリケーションを作成するためのアプリケーションプログラミングインターフェースが使用される。この上位プログラミングモデルは、プログラマが位置情報を単に緯度や経度などの未加工の位置データとしてではなく、論理エンティティとして使用できるようにすることを対象としている。位置情報は、関心地域別に取り出される。開発者は、自らの地図レンダリングソフトウェアを作ることに関心を持つ必要はなく、第三者が開発したレンダリングエンジンを使用することができる。
【０００６】
本発明の別の態様によれば、位置認識型アプリケーションを作成するためにイベント駆動型のプログラミングモデルが使用される。イベントは、ある関心地域に対するアイテムの相対位置に応答して生成されてもよい。例えば、プログラマは、デバイスが第１の関心地域に入る場合に１つのルーチンが実行されるように指定し、デバイスが第２の関心地域を出る場合にもう１つのルーチンが実行されるようにする。
【０００７】
本発明のさらに別の態様によれば、様々な位置認識型アプリケーションが、位置データストアにアクセスすることができる。各ロケーションアプリケーションが自らのデータストアを利用するのではなく、アプリケーションが位置関連情報を共用することができる。
【０００８】
本発明のさらに別の態様によれば、様々な位置認識型アプリケーションが共用の地図にアクセスすることができる。各ロケーションアプリケーションが自らの地図ストアおよび地図レンダリング技術を利用するのではなく、アプリケーションは共用の地図データリポジトリおよび地図レンダリングエンジンを使って動作することができる。
【発明を実施するための最良の形態】
【０００９】
一般に、本発明は、位置認識型ソフトウェアアプリケーションの開発および使用を容易にするためのシステムおよび方法を提供することを対象としている。位置情報の収集、分析、および表示という、現在は別個のそれぞれ複雑なタスクを組み合わせ、非熟練者が自らのアプリケーションにロケーションサービスを組み込めるようになるまで統合することで、優れた位置認識型ソフトウェアアプリケーションを開発するという開発者の能力が高まる。
【００１０】
例示的な位置認識型開発システム
図３は、本発明の諸態様による位置認識型システムを示す。位置システム３００は、ロケーションマネージャ３２０、位置認識型アプリケーション３３０、およびマップマネージャ３４０を含む。ロケーションマネージャは、位置ソース３２５（１−Ｎ）と結合されている。マップマネージャは、１つ（または複数）の地図ストア３４２、１つ（または複数）の地図生成器３４４、および１つ（または複数）の地図ウェブサービス３４６に結合されている。
【００１１】
ロケーションマネージャ３２０は、オンデバイスまたはオフデバイスの位置ソース３２５（１−Ｎ）から位置情報を受け取り、位置認識型アプリケーション３３０に提供される位置イベント別に位置情報を取り出すように構成される。位置ソースは、あるアイテムについての位置情報を提供するものであれば何でもよい。例えば、位置ソースの１つはＧＰＳ受信機でよい。別の位置ソースとしては、アイテムの位置を示すユーザの入力でもよい。例えば、ユーザは、デバイスへのユーザ入力により、自分が特定の位置にいることを知らせることができる。ユーザは、キーパッド、タッチスクリーン、音声認識その他を使用して自らのデバイスに位置を入力してもよい。他の位置ソースとしては、シミュレートされた位置ソースでもよい。アプリケーション３３０をテストするために開発者が野外に出る必要はなく、シミュレートされた位置データを使用することができる。さらに別の位置ソースとしては、ＲＦＩＤタグであってもよい。各位置ソースは、位置データの様々な解像度を提供することができる。例えば、一部の位置ソースは極めて正確であるのに対して、別の位置ソースは近所まで、または面する道路までなどといった範囲まで正確であるかも知れない。
【００１２】
位置ソースは、近傍のまたは遠隔の位置ソースに対応することができる。近傍のソースは、ネットワーク情報から自らの位置を取得するＧＰＳ受信機またはモバイルデバイス自体を含むが、それだけには限らない位置生成ハードウェアに対応する。遠隔の位置ソースは、リモートなネットワークソースからプッシュまたはプルされた位置情報（例えば、友人の車の位置情報と共に到着する、プッシュされたＳＭＳメッセージ、またはウェブリクエストを介して返送（プル）された位置情報など）に対応する。近傍のおよび遠隔の位置ソースは、いずれも抽象的な論理エンティティとして取り扱われる。これによって、多くの異なる種類の位置情報に対し、プログラミングモデルは似通ったものとなる。
【００１３】
位置データを受信すると、ロケーションマネージャ３２０は、アプリケーション３３０に関連する位置イベントがトリガされていないかどうかを判断する。位置ソースからアプリケーション３３０に未加工の位置データしか提供することができないのではなく、ロケーションマネージャ３２０はある関心地域と何らかの論理的関係性をもつアイテムの発生時に、関心地域への出入りなどの位置イベントを提供する。
【００１４】
一般に、関心地域は位置データの抽象物を提供する（図５および関連する議論を参照されたい）。関心地域は、どんな地域でもよく、屋内でも屋外でもよい。例えば、屋内の位置を使用して不動産（例えば会議室）および／または動産（例えば人、事務用機器、在庫品）の位置を示すことができる。
【００１５】
屋外の関心地域は、街区、建物または他の目印の周囲、あるいはその他の予め定義された地域であってもよい。さらに、屋外の関心地域は、動産（例えば車、または人）であってもよい。
【００１６】
未加工の位置データをあるアプリケーションが解釈しなければならないのではなく、アプリケーション３３０は、関心地域とのアイテムの関連性に基づいて位置イベントを登録する。予め定義された位置イベントが発生すると、ロケーションマネージャ３２０はアプリケーション３３０に通知を行う。その時点で、アプリケーション３３０は、その位置イベントを処理するために開発されたイベント駆動型コードルーチンを実行する。
【００１７】
位置認識型アプリケーション３３０は、生成された位置イベントに応答する。位置イベントが発生すると、位置認識型アプリケーション３３０は、１組の重み付き判断基準（ｗｅｉｇｈｔｅｄ  ｃｒｉｔｅｒｉａ）をマップマネージャ３４０に供給する。例えば、重み付き判断基準は、提案された地図解像度、およびアプリケーションが自ら描く地図上に表示しようとする１組のオブジェクトを含むことができる。アプリケーションはさらに、その既存の地図上にレンダリングしたいオブジェクトを提供することもできる。地図のイベント駆動型レンダリングに応答することに加え、アプリケーションは自動推進型であってもよい。例えば、アプリケーションは定期的に情報をプルし、新たな地図のレンダリングを行うタイマをもつことができる。したがって、プッシュされたイベント駆動型応答に加えて、アプリケーションはデータをプルし、処置を講じることができる。
【００１８】
マップマネージャ３４０は、アプリケーションから地図情報を抽出し、したがって地図や位置情報をどう扱うかに関する詳細を知っている必要がない。アプリケーションが複雑な地図レンダリングコードを含む必要があるのではなく、アプリケーションはマップマネージャ３４０に表示してほしい地図の名前や種類を提供する。地図生成器３４４は、どんな単一のアプリケーションまたはレンダリングエンジンとも連動していない。例えば、あるレンダリングエンジンはベクターベースでもよく、別のレンダリングエンジンはビットマップベースでもよい。位置認識型アプリケーション３３０は、地図生成器３４４と対話するためのインターフェースを備えている。
【００１９】
マップマネージャ３４０は、アプリケーションに１組の豊富な機能を提供し、したがって位置認識型アプリケーション３３０は地図コードをどう実施すべきかの詳細を知る必要がない。例えば、アプリケーション３３０は、ユーザが地図上のあるエリアを指し示し、次いでそのデータの緯度および経度、あるいは屋内の地図の場合は屋内の座標系への変換を可能にしたいものと仮定する。マップマネージャ３４０は、その情報をアプリケーション３３０に提供する。マップマネージャ３４０は、アプリケーション３３０と地図レンダリング技術との間のブローカとして働き、アプリケーションに機能を提供する。そうした機能としては、デバイス上のＸ／Ｙ画面座標を地図上の緯度／経度／高度の地図座標へマッピングすることが含まれる。例えば、ユーザは、自らの位置を入力するために地図を表示中の画面をクリックすることができる。ユーザの入力に応答して、マップマネージャはＸ／Ｙ画面座標を地図上の緯度／経度／高度の地図座標へマッピングする。同様に、マップマネージャ３４０は地図上の緯度／経度／高度の地図座標をＸ／Ｙ画面座標へマッピングして、アプリケーションが表示中の地図上に動的にレンダリングを行えるようにする。スキーエリアの地図など一部の地図レンダリングにおける高度は、Ｘ／Ｙ位置に大きな影響を及ぼすことがある。Ｘ／Ｙ画面座標を地図上の緯度／経度／高度の地図座標に変換するには、多くの方法がある。一般に、マップマネージャはＸ／Ｙ画面座標を受け取り、座標を地図にマッチさせ、次いで、地図の尺度、投影図法および地図の境界線に基づいて緯度／経度／高度座標を提供する。アプリケーションは、地図自体がどのようにしてレンダリングされているか、あるいはどの「投影図法」が使用されているかを理解する必要はない。メルカトル図法、円筒図法、極射影法、格子投影法などの古典的な地図投影図法および特別な投影図法（例えば、スキーエリアの地図やスタジアムの座席図など）を含むが、それだけには限らない多くの異なる地図投影図法が可能である。アプリケーションは、異なる投影図法の間をシームレスに動くことができる。
【００２０】
マップマネージャ３４０はまた、アプリケーション３３０に、１組の利用可能な地図に関する高位のイベントを供給する。これらのイベントは、アプリケーションが要求する判断基準を満たす地図がいくつか利用可能となっている場合などに、アプリケーションに重要な情報を提供する。アプリケーション３３０は、表示用の地図を１つだけ使用することに限定されない。例えば、あるアプリケーションは、ある一定の時間は市街地図を使用し、別の時間には地下鉄の地図（例えば、バスの運行経路、地下鉄のトンネルなどを表示）を使用することができる。マップマネージャ３４０は、地図をその適合性の順序に従ってランク付けする。アプリケーション３３０から提供された判断基準を満たす地図は利用可能でないが、マップマネージャ３４０がその判断基準の一部を満たす地図を探し出すことができる場合は、それらの地図を提供することができる。
【００２１】
マップマネージャ３４０はまた、デバイス上への新たな地図の動的プロビジョニングを可能にする。これらの地図は、いつでもデバイスにダウンロードすることができる。例えば、新たな公共輸送路が追加されると、公共交通アプリケーションのために新たな地図をダウンロードすることができる。一実施形態によれば、これらの地図は２つのファイル、すなわちバイナリでマップマネージャからは不透明な１つのファイルと、マップマネージャが理解できる１つのファイルとで表現される。別の実施形態によれば、地図はＸＭＬファイルを使用して表現される。マップマネージャは、ＸＭＬファイルを読み、地図をオンデバイスでローカルな地図データストアに追加するのに必要な情報を入手することができる。地図はまた、開発者によって、あるいは別のソースを通して地図ストアに追加することもできる。
【００２２】
例示的ＸＭＬ表現を次に示す。
【００２３】
【表１】
2006153863.tif 000003
【００２４】
MapProjectionは、地図を表示するのに使用されている図法を参照する。この例では、地図投影法の種類は単純な格子である。MetersPerPixelは、地図の平均解像度を参照する。MapInfoClassは、この地図についての質問に答えるのに必要なカスタムクラスがあるかどうかを参照する。このフィールドは、この地図が表示された場合に呼び出し得るカスタムクラスを開発者がプログラミング環境に含めることを可能にする。同様に、CustomMapRendererは、地図を描くのにカスタムレンダリングエンジンが必要かどうかを参照する。SimpleLatLongRectangleフィールドは、地図を緯度および経度の座標で画定された長方形として識別する。
【００２５】
以下の例は、いくつかのカスタムフィールドが使用される様子を示す。
【００２６】
【表２】
2006153863.tif 000004
【００２７】
マップマネージャ３４０は、アプリケーション３３０が使うかもしれない複数の地図を、利用可能な状態でデバイス上の地図ストア（３４２）内にもつことができる。マップマネージャ３４０は、デバイス上の地図ストア３４２内の利用可能な１組の地図を検索し、使用すべき最適の地図を探す。選択の後、最適の地図が選択されレンダリングされる。
【００２８】
図４は、本発明の諸態様による、位置認識型アプリケーションの開発のための対話の状態図である。
【００２９】
まず状態４１０で、地理的な関心地域が画定される。関心地域の選択は、位置認識型アプリケーションが実行（ｄｅｐｌｏｙ）される前でも後でもよい。さらに、この情報は、いつでもデバイスに送出することができる。関心地域とは、ある地図に関連する予め画定された領域である。関心地域は、画定可能などんな大きさでもよい。例えば、関心地域は、その大きさが１平方メートルでも、あるいはある国全体でもよい。関心地域は、位置認識型アプリケーションの必要に基づいて画定される。例えば、開発中の位置認識型アプリケーションは、子供がいつ学校を出て家に帰るかを判断するものであると仮定する。この具体例では、関心地域は学校を含む地域でよく、別の関心地域は子供の家でよい。関心地域の一部は開発者が選択でき、他の関心地域はユーザが選択することができる。例えば、上述の例などの多くのアプリケーションは、アプリケーションがユーザに提供された後に構成される。上述の例では、親が関心地域を選択することができる。
【００３０】
状態４２０は、地図および地図サーバの選択を示す。開発者は、システム内で利用可能な地図から選択するか、あるいは自ら地図を作成することができる。本発明の一実施形態によれば、様々な位置認識型アプリケーションが同じ地図を使用できるように、利用可能な地図が複数のロケーションアプリケーションに共用される。このようにすると、各位置認識型アプリケーションが自らの地図を開発しなくて済む。ほとんどの場合、地図レンダリングの詳細は、位置認識型アプリケーションの開発者からは見えない。開発者が自らのレンダリングソフトウェアを含めたいと望むのであれば、状態４４０で開発者は自らのレンダリングソフトウェアを含めることができる。
【００３１】
状態４４０で、開発者は、レンダリングのための自らの選択を設定することもできる。例えば、開発者はアプリケーションの一部にベクターベースのレンダリングエンジンを使用し、アプリケーションの別の部分ではビットマップベースのシステムを使用したいかもしれない。地図エンジンは、多くの異なるソースが提供することができる。エンジンを構築したいと考えるどんな開発者も、プログラミングインターフェースに適合する地図エンジンを供給することができる。各地図エンジンは、開発システムにプラグインされる。
【００３２】
状態４３０で、開発者は、自らのアプリケーション内の関心地域に関連するイベントに応答して実行されるイベントベースの位置コードのプログラミングを行う。このイベントベースのコードは、開発中の位置認識型アプリケーションの種類に依存しており、多くの異なる種類のデータを含むことができる。例えば、あるプログラムは、ユーザが所定の位置に到達した時点である動作を実施するかもしれない。上述の子供を追跡する例では、特定の時点における子供の位置に基づいて家または学校をハイライトする例示的ルーチンのプログラミングが可能である。開発者は、さらにイベントに応答して、地図上にアイテムを配置することもできる。
【００３３】
状態４５０で、位置認識型アプリケーションは、本物のおよび／またはシミュレートされた位置ソースを使用してテストすることができる。システムは、実地に使用される前に試験できるように、シミュレータに位置ソースを提供する。シミュレートされたデータソースを使用すると、位置イベント発生時に開発者のイベントベースの位置コードのテストが可能になる。シミュレートされた位置ソースデータの別の使用法は、予め記録された現実の位置データを「再生」することである。これは、アプリケーションの開発、テストおよびデバッグに有用である。
【００３４】
図５は、本発明の諸態様による、例示的関心地域の画定を示す。図５に示すように、２つの関心地域が画定されている。関心地域＃１は楕円形の境界領域で画定され、関心地域＃２は長方形の境界で画定される。これらの関心地域は所定の幾何学的図形を使用して画定されているが、関心地域は、地域をより明確に画定するどんなやり方で画定することもできる。例えば、関心地域は近辺、郡、特定の道路の間の地域などとして画定することができる。本発明の一実施形態によれば、開発者は１組の予め定義された図形を使用して関心地域を画定する。さらに、ユーザは地図上の地点を指し示し、その地点から広がる半径を提供することで関心地域とすることができる。関心地域はまた、緯度および経度の座標を使用して設定することもできる。
【００３５】
図５に示す地図は、通りを含む市内地図を示しているが、地図はどんな種類のものでもよい。地図の例としては、スキー地図、森、公園、またはゴルフコースの地図、建物の平面図、スタジアムの座席図などがある。先に論じたように、関心地域が指定されると、何かが地域を出入りすることがイベントのトリガとなり得る。
【００３６】
図示されていないが、関心地域はある特定の種類の位置でもよい。例えば、ある位置認識型アプリケーションは、自らがコーヒーショップまたは映画館に近付いた時点で、そのことを知りたいかもしれない。この例では、システムが知り得た全てのコーヒーショップまたは映画館が関心地域となり得る。さらに多くのコーヒーショップが利用可能となるにつれて、それらの位置はアプリケーションに動的に追加され、したがってアプリケーションがそれらを認識する。他の位置認識型アプリケーションは、関心地域を特定の店、競技場、バス停、オフィスビルなどとして定義するかもしれない。
【００３７】
図６は、本発明の諸態様による、位置認識型アプリケーションが使用できる例示的な地図を示す。図示されるように、これらの地図は緯度および経度によって画定される単純な長方形として画定される。４つの地図はそれぞれ、左上の緯度および経度と、右下の緯度および経度を含む。先に図３に関して論じたように、地図は多くの異なるやり方で画定することができる。どんな位置認識型アプリケーションも、それが適切な場合、表示用にこれらの地図を使用することができる。
【００３８】
図７は、本発明の諸態様による、位置認識型アプリケーションの例示的なシミュレーションスクリーンショットを示す。シミュレータ内で、小さくより詳細なビューと大域的で全体的なビューとを含む２つの地図ビューが表示されている。地図上には、円形の領域および四角形の領域で表された、予め定義された関心地域が示される。シミュレートされた動作がある地域を出入りすると、開発者は自ら開発した適切なコードが正しく動作しているかどうかを判断することができる。
【００３９】
例示的動作環境
図１を参照すると、本発明を実装するための例示的システムの１つは、コンピューティングデバイス１００などのコンピューティングデバイスを含む。ごく基本的な構成では、コンピューティングデバイス１００は一般に少なくとも１つの処理装置１０２およびシステムメモリ１０４を含む。コンピューティングデバイスの厳密な構成および種類に応じて、システムメモリ１０４は揮発性（例えばＲＡＭ）でもよく、非揮発性（例えばＲＯＭ、フラッシュメモリなど）でもよく、あるいは両者の何らかの組合せでもよい。システムメモリ１０４は一般に、オペレーティングシステム１０５および１つまたは複数のアプリケーション１０６を含み、プログラムデータ１０７を含むことができる。一実施形態では、アプリケーション１０６は、モバイルデバイスのための位置認識型アプリケーションを構築するのに使用する、位置認識型プログラミングインターフェース１２０を含むことができる。この位置認識型プログラミングインターフェースは、マップ選択、管理およびレンダリングインターフェースと統合することができる。この基本構成を、図１に点線１０８で囲まれた構成要素で示す。
【００４０】
コンピューティングデバイス１００は、追加の特徴または機能をもつことができる。例えば、コンピューティングデバイス１００は例えば磁気ディスク、光ディスク、テープなど追加のデータ記憶装置（着脱式および／または固定式）を含むことができる。このような追加の記憶装置は、図１では着脱式記憶装置１０９および固定式記憶装置１１０として示す。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなどの情報の記憶のための任意の方法または技術で実装される揮発性および非揮発性、着脱式および固定式の媒体を含むことができる。システムメモリ１０４、着脱式記憶装置１０９および固定式記憶装置１１０は、いずれもコンピュータ記憶媒体の例である。コンピュータ記憶媒体としては、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤまたは他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは所望の情報を記憶し、コンピューティングデバイス１００がアクセスできるようなその他の全ての媒体が含まれるが、それだけには限らない。そのような一切のコンピュータ記憶媒体は、デバイス１００の一部となることができる。コンピューティングデバイス１００はまた、キーボード、マウス、ペン、音声入力装置、タッチ入力装置など１つ（または複数）の入力装置１１２をもつことができる。ディスプレイ、スピーカ、プリンタなど１つ（または複数）の出力装置１１４も含むことができる。
【００４１】
コンピューティングデバイス１００はまた、デバイスが例えばネットワークを介して他のコンピューティングデバイス１１８と通信できるようにする通信接続１１６も含むことができる。通信接続１１６は、通信媒体の一例である。通信媒体は、一般にコンピュータ可読命令、データ構造、プログラムモジュール、あるいは例えば搬送波または他の搬送機構などの変調データ信号内の他のデータとして実施することができ、任意の情報送達媒体を含む。「変調データ信号」という用語は、信号内に情報が符号化されるように、その１つまたは複数の特徴が設定または改変された信号を意味する。限定ではなく例を示すと、通信媒体は有線ネットワークや直接線接続などの有線媒体と、音響、ＲＦ、赤外線およびその他の無線媒体とを含む。ここで使用されるコンピュータ可読媒体という用語は、記憶媒体と通信媒体のどちらも含む。
【００４２】
図２は、本発明の例示的一実施形態で使用することができるモバイルコンピューティングデバイスを示す。図２を参照すると、本発明を実施するための１つの例示的なシステムは、モバイルコンピューティングデバイス２００などのモバイルコンピューティングデバイスを含む。モバイルコンピューティングデバイス２００は、プロセッサ２６０、メモリ２６２、ディスプレイ２２８およびキーパッド２３２を含む。メモリ２６２は一般に、揮発性メモリ（例えばＲＡＭ）および非揮発性メモリ（例えばＲＯＭ、フラッシュメモリなど）の両方を含む。モバイルコンピューティングデバイス２００は、メモリ２６２に常駐しプロセッサ２６０上で実行される、例えばＭｉｃｒｏｓｏｆｔ  ＣｏｒｐｏｒａｔｉｏｎのＷｉｎｄｏｗｓ（登録商標）ＣＥオペレーティングシステムなどのオペレーティングシステム２６４を含む。キーパッド２３２は、プッシュボタン式の数字ダイアルパッド（例えば一般の電話にあるような）でも、マルチキーキーボード（例えば従来型キーボード）でもよい。ディスプレイ２２８は液晶ディスプレイでも、モバイルコンピューティングデバイスで一般に使われるその他任意の種類のディスプレイでもよい。ディスプレイ２２８はタッチセンシティブでもよく、その場合は入力装置としても働く。
【００４３】
１つ（または複数）のロケーションアプリケーション２６６など１つまたは複数のアプリケーションプログラムがメモリ２６２にロードされ、オペレーティングシステム２６４上で実行される。モバイルコンピューティングデバイス２００上には１つまたは複数の位置認識型アプリケーション２６６が常駐し、位置ベースのアプリケーションに関連する命令を実行するようにプログラムされている。位置認識型アプリケーションは、デバイスのハードウェアまたはソフトウェアに常駐させることができる。モバイルコンピューティングデバイス２００はまた、メモリ２６２内に揮発性および非揮発性記憶装置を含むこともできる。メモリ２６２はまた、位置ベースの情報の記憶に使用される位置データストア２６８、および地図ベースの情報の記憶に使用される地図ストア２６９を含む。位置ストア２６８は、デバイス上の全ての位置認識型アプリケーション２６６が使用することができる位置情報を記憶するための大域的な機構である。地図ストア２６９も、デバイス上の全ての位置認識型アプリケーション２６６が使用することができる地図情報を記憶するための大域的な機構である。一実施形態によれば、リポジトリ２６８は位置および地図情報のオンデバイスのキャッシュである。モバイルデバイス２００には、２つ以上の位置ストアがあってもよい。例えば、プライベートおよびパブリックの位置データストアがあってもよい。
【００４４】
モバイルコンピューティングデバイス２００は、１つまたは複数の電池として実装できる電源２７０を含む。電源２７０はさらに、ＡＣアダプタあるいは電池を補給または充電する電動格納台（ｐｏｗｅｒｅｄ  ｄｏｃｋｉｎｇ  ｃｒａｄｌｅ）などの外部電源を含むことができる。
【００４５】
モバイルコンピューティングデバイス２００は、２種類のオプションの外部通知機構、すなわちＬＥＤ２４０および音声インターフェース２７４と共に示されている。これらのデバイスは、起動した場合、プロセッサ２６０および他の構成要素が電池の電力を節約するためにシャットダウンした場合でも通知機能が指示したある持続期間中電源が入ったままであるように、電源２７０に直接結合することができる。音声インターフェース２７４は、ユーザとの間の音響信号の送受信に使用される。例えば、音声インターフェース２７４は音響出力を提供するためにスピーカに結合され、例えば電話による会話が容易になるように、音響入力を受信するためにマイクロフォンに結合できる。
【００４６】
モバイルコンピューティングデバイス２００はまた、通信を送受する機能を果たす、無線インターフェース層などの１つ（または複数）の通信接続も含む。通信接続２７２は、モバイルコンピューティングデバイス２００と外界との間の無線接続性を促進する。一実施形態によれば、通信接続２７２との間の送受信は、オペレーティングシステム２６４の制御下で実施される。
【００４７】
図８は、本発明の諸態様による、位置認識型開発システム８００を全般的に示した機能ブロック図である。サーバ８１０およびコンピューティングデバイス８３０は、図１に関して前述したようなコンピューティングデバイスであり、モバイルデバイス８２０は図２に関して前述したようなモバイルデバイスである。
【００４８】
一般に、ユーザはコンピューティングデバイス８３０などのコンピューティングデバイスを使用して位置認識型アプリケーションを開発する。しかし、位置認識型アプリケーションは、モバイルデバイス８２０などのモバイルデバイスを使用して開発することもできる。位置認識型プログラミング環境８３２は、開発者に位置認識型アプリケーションを開発するための１組のプログラミングインターフェースを提供するように構成される。位置認識型プログラミング環境８３２は、サーバ８１０と通信するように構成される。一実施形態によれば、サーバ８１０はコンピューティングデバイス８３０に位置ストア８１２からの位置情報と、地図ストア８１３からの地図情報とを提供するように構成される。サーバ８１０またはモバイルデバイスはまた、位置認識型アプリケーションを開発中に位置ソースをシミュレートするように構成することもできる。例えば、シミュレートされた位置ソースをモバイルデバイス上で実行させ、ＧＰＳソースなどの入力をシミュレートすることができる。コンピューティングデバイスは、いくつかのクライアントサーバプロトコルのうちのいずれか１つを使用して通信することができる。
【００４９】
モバイルデバイス８２０は、位置認識型プログラミング環境８３２を使用して開発された位置認識型アプリケーション８２２を含む。モバイルデバイス８２０には、２つ以上の位置認識型アプリケーションを含むことができる。モバイルデバイス８２０には、Ｎ個の位置ソース８２１（１−Ｎ）が接続されている。これらの位置ソースはオンデバイスもオフデバイスも含み、前述のようにロケーションアプリケーション８２２に位置データを提供する。位置ストア８２４は、モバイルデバイス８２０上の全ての位置認識型アプリケーションがアクセスすることのできる位置情報を含む。地図ストア８２５は、モバイルデバイス８２０上の全ての位置認識型アプリケーションがアクセスすることのできる地図情報を含む。例えば、位置ストア８２４および地図ストア８２５は、これらのアプリケーションが共用することのできる地図、レンダリングエンジン、およびその他のあらゆる情報を含むことができる。
【００５０】
セルラー／ポケットベルネットワーク８５０は、無線デバイスとの間のメッセージの送達および受信を担うネットワークである。セルラー／ポケットベルネットワーク８５０は、無線および有線のどちらの構成要素も含むことができる。例えば、セルラー／ポケットベルネットワークは、有線電話ネットワークにリンクされたセルラーアンテナを含んでもよい。一般に、セルラーアンテナは、携帯電話との間の通信や、長距離通信リンクなどを搬送する。無線デバイスはまた、モバイルデバイス用としてますます利用可能となっているＷｉ−Ｆｉカードなどのハードウェアを使用してＷＡＮやＬＡＮなどと直接接続することができる。
【００５１】
ゲートウェイ８６０は、セルラー／ポケットベルネットワーク８５０とＷＡＮ／ＬＡＮ８４０との間のメッセージのルーティングを行う。例えば、あるコンピュータユーザは携帯電話に宛てたメッセージを送信するかもしれない。ゲートウェイ８６０は、ＷＡＮ／ＬＡＮ８４０からセルラー／ポケットベルネットワーク８５０へメッセージを運ぶ手段を提供する。逆に、セルラーネットワークに接続したデバイスをもつユーザがウェブをブラウズしているかもしれない。ゲートウェイ８６０は、ＷＡＮ／ＬＡＮ８４０とセルラー／ポケットベルネットワーク８５０との間のＨＴＴＰメッセージの送受信を可能にする。
【００５２】
上述の仕様、例およびデータは、本発明の構成の製造および使用に関する完全な説明を提供する。本発明の精神および範囲から逸脱することなく本発明の多くの実施形態が作成できるため、本発明は添付の特許請求の範囲にある。
【図面の簡単な説明】
【００５３】
【図１】本発明の例示的実施形態で使用できる例示的なコンピューティングデバイスを示す図である。
【図２】本発明の例示的実施形態で使用できる例示的なコンピューティングデバイスを示す図である。
【図３】位置認識型システムを示す図である。
【図４】位置認識型アプリケーションの開発のための対話の状態図である。
【図５】例示的関心地域の画定を示す図である。
【図６】位置認識型アプリケーションが使用できる例示的な地図を示す図である。
【図７】位置認識型アプリケーションの例示的なシミュレーションスクリーンショットを示す図である。
【図８】本発明の諸態様による位置認識型開発システムを全般的に示した機能ブロック図である。
【符号の説明】
【００５４】
１００  コンピューティングデバイス
１０２  処理装置
１０４  システムメモリ
１０５  オペレーティングシステム
１０６  アプリケーション
１０７  プログラムデータ
１０９  着脱式記憶装置
１１０  固定式記憶装置
１１２  １つ（または複数）の入力装置
１１４  １つ（または複数）の出力装置
１１６  １つ（または複数）の通信接続
１１８  他のコンピューティングデバイス
１２０  位置認識型プログラミングインターフェース
【図１】
2006153863.tif 000005
【図２】
2006153863.tif 000006
【図３】
2006153863.tif 000007
【図４】
2006153863.tif 000008
【図５】
2006153863.tif 000009
【図６】
2006153863.tif 000010
【図７】
2006153863.tif 000011
【図８】
2006153863.tif 000012