説明

位置認識型モバイルデバイス用ソフトウェアの開発

【課題】位置認識型アプリケーションを開発し使用することを容易にする開発環境を提供すること。
【解決手段】位置情報の収集、分析、および表示という、現在は別個のそれぞれ複雑なタスクを組み合わせ、非熟練者が自らのアプリケーションにロケーションサービスやマッピングサービスを組み込めるようになるまで統合することで、機能に富む位置認識型ソフトウェアアプリケーションを開発する。上位プログラミングモデルは、プログラマが位置情報を単に緯度や経度などの未加工の位置データとしてではなく、論理エンティティとして使用できるようにする。デバイス上の様々な位置認識型アプリケーションが、位置データストアおよび地図データストアにアクセスする。各ロケーションアプリケーションが自らの地図ストアを利用するのではなく、複数のアプリケーションは位置に関連する情報を共用する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は位置情報を利用するアプリケーションプログラム、システムおよび方法に関する。
【背景技術】
【0002】
ここ数年、位置情報を利用したアプリケーションがますます多く開発されるようになってきた。これらのロケーションアプリケーションのうちには、マッププログラム、フライトトラッカープログラム、およびナビゲーションプログラムを含むものもある。
【発明の開示】
【発明が解決しようとする課題】
【0003】
これらのアプリケーションの多くは、モバイルコンピューティングデバイス用に開発されている。例えば、都市の中をユーザがナビゲートする助けとなるよう、車載ナビゲーションシステムが開発されている。携帯電話のうちには、GPSベースのナビゲーションプログラムを含むものもある。しかし、これらのアプリケーションを開発することは非常に困難である。一般に、ポジショニングシステムは緯度や経度などの位置データだけを提供し、その情報を処理し解釈するためにはアプリケーションを必要とする。
【課題を解決するための手段】
【0004】
本発明のいくつかの実施形態は、位置認識型ソフトウェアアプリケーションの開発および使用を容易にするためのシステムおよび方法に関する。位置情報の収集、分析、および表示という、現在は別個のそれぞれ複雑なタスクを組み合わせ、非熟練者が自らのアプリケーションにロケーションサービスやマッピングサービスを組み込めるようになるまで統合することで、機能に富む位置認識型ソフトウェアアプリケーションを開発する開発者の能力が高まる。
【0005】
一態様によれば、位置認識型アプリケーションを作成するためのアプリケーションプログラミングインターフェースが使用される。この上位プログラミングモデルは、プログラマが位置情報を単に緯度や経度などの未加工の位置データとしてではなく、論理エンティティとして使用できるようにすることを対象としている。位置情報は、関心地域別に取り出される。開発者は、自らの地図レンダリングソフトウェアを作ることに関心を持つ必要はなく、第三者が開発したレンダリングエンジンを使用することができる。
【0006】
本発明の別の態様によれば、位置認識型アプリケーションを作成するためにイベント駆動型のプログラミングモデルが使用される。イベントは、ある関心地域に対するアイテムの相対位置に応答して生成されてもよい。例えば、プログラマは、デバイスが第1の関心地域に入る場合に1つのルーチンが実行されるように指定し、デバイスが第2の関心地域を出る場合にもう1つのルーチンが実行されるようにする。
【0007】
本発明のさらに別の態様によれば、様々な位置認識型アプリケーションが、位置データストアにアクセスすることができる。各ロケーションアプリケーションが自らのデータストアを利用するのではなく、アプリケーションが位置関連情報を共用することができる。
【0008】
本発明のさらに別の態様によれば、様々な位置認識型アプリケーションが共用の地図にアクセスすることができる。各ロケーションアプリケーションが自らの地図ストアおよび地図レンダリング技術を利用するのではなく、アプリケーションは共用の地図データリポジトリおよび地図レンダリングエンジンを使って動作することができる。
【発明を実施するための最良の形態】
【0009】
一般に、本発明は、位置認識型ソフトウェアアプリケーションの開発および使用を容易にするためのシステムおよび方法を提供することを対象としている。位置情報の収集、分析、および表示という、現在は別個のそれぞれ複雑なタスクを組み合わせ、非熟練者が自らのアプリケーションにロケーションサービスを組み込めるようになるまで統合することで、優れた位置認識型ソフトウェアアプリケーションを開発するという開発者の能力が高まる。
【0010】
例示的な位置認識型開発システム
図3は、本発明の諸態様による位置認識型システムを示す。位置システム300は、ロケーションマネージャ320、位置認識型アプリケーション330、およびマップマネージャ340を含む。ロケーションマネージャは、位置ソース325(1−N)と結合されている。マップマネージャは、1つ(または複数)の地図ストア342、1つ(または複数)の地図生成器344、および1つ(または複数)の地図ウェブサービス346に結合されている。
【0011】
ロケーションマネージャ320は、オンデバイスまたはオフデバイスの位置ソース325(1−N)から位置情報を受け取り、位置認識型アプリケーション330に提供される位置イベント別に位置情報を取り出すように構成される。位置ソースは、あるアイテムについての位置情報を提供するものであれば何でもよい。例えば、位置ソースの1つはGPS受信機でよい。別の位置ソースとしては、アイテムの位置を示すユーザの入力でもよい。例えば、ユーザは、デバイスへのユーザ入力により、自分が特定の位置にいることを知らせることができる。ユーザは、キーパッド、タッチスクリーン、音声認識その他を使用して自らのデバイスに位置を入力してもよい。他の位置ソースとしては、シミュレートされた位置ソースでもよい。アプリケーション330をテストするために開発者が野外に出る必要はなく、シミュレートされた位置データを使用することができる。さらに別の位置ソースとしては、RFIDタグであってもよい。各位置ソースは、位置データの様々な解像度を提供することができる。例えば、一部の位置ソースは極めて正確であるのに対して、別の位置ソースは近所まで、または面する道路までなどといった範囲まで正確であるかも知れない。
【0012】
位置ソースは、近傍のまたは遠隔の位置ソースに対応することができる。近傍のソースは、ネットワーク情報から自らの位置を取得するGPS受信機またはモバイルデバイス自体を含むが、それだけには限らない位置生成ハードウェアに対応する。遠隔の位置ソースは、リモートなネットワークソースからプッシュまたはプルされた位置情報(例えば、友人の車の位置情報と共に到着する、プッシュされたSMSメッセージ、またはウェブリクエストを介して返送(プル)された位置情報など)に対応する。近傍のおよび遠隔の位置ソースは、いずれも抽象的な論理エンティティとして取り扱われる。これによって、多くの異なる種類の位置情報に対し、プログラミングモデルは似通ったものとなる。
【0013】
位置データを受信すると、ロケーションマネージャ320は、アプリケーション330に関連する位置イベントがトリガされていないかどうかを判断する。位置ソースからアプリケーション330に未加工の位置データしか提供することができないのではなく、ロケーションマネージャ320はある関心地域と何らかの論理的関係性をもつアイテムの発生時に、関心地域への出入りなどの位置イベントを提供する。
【0014】
一般に、関心地域は位置データの抽象物を提供する(図5および関連する議論を参照されたい)。関心地域は、どんな地域でもよく、屋内でも屋外でもよい。例えば、屋内の位置を使用して不動産(例えば会議室)および/または動産(例えば人、事務用機器、在庫品)の位置を示すことができる。
【0015】
屋外の関心地域は、街区、建物または他の目印の周囲、あるいはその他の予め定義された地域であってもよい。さらに、屋外の関心地域は、動産(例えば車、または人)であってもよい。
【0016】
未加工の位置データをあるアプリケーションが解釈しなければならないのではなく、アプリケーション330は、関心地域とのアイテムの関連性に基づいて位置イベントを登録する。予め定義された位置イベントが発生すると、ロケーションマネージャ320はアプリケーション330に通知を行う。その時点で、アプリケーション330は、その位置イベントを処理するために開発されたイベント駆動型コードルーチンを実行する。
【0017】
位置認識型アプリケーション330は、生成された位置イベントに応答する。位置イベントが発生すると、位置認識型アプリケーション330は、1組の重み付き判断基準(weighted criteria)をマップマネージャ340に供給する。例えば、重み付き判断基準は、提案された地図解像度、およびアプリケーションが自ら描く地図上に表示しようとする1組のオブジェクトを含むことができる。アプリケーションはさらに、その既存の地図上にレンダリングしたいオブジェクトを提供することもできる。地図のイベント駆動型レンダリングに応答することに加え、アプリケーションは自動推進型であってもよい。例えば、アプリケーションは定期的に情報をプルし、新たな地図のレンダリングを行うタイマをもつことができる。したがって、プッシュされたイベント駆動型応答に加えて、アプリケーションはデータをプルし、処置を講じることができる。
【0018】
マップマネージャ340は、アプリケーションから地図情報を抽出し、したがって地図や位置情報をどう扱うかに関する詳細を知っている必要がない。アプリケーションが複雑な地図レンダリングコードを含む必要があるのではなく、アプリケーションはマップマネージャ340に表示してほしい地図の名前や種類を提供する。地図生成器344は、どんな単一のアプリケーションまたはレンダリングエンジンとも連動していない。例えば、あるレンダリングエンジンはベクターベースでもよく、別のレンダリングエンジンはビットマップベースでもよい。位置認識型アプリケーション330は、地図生成器344と対話するためのインターフェースを備えている。
【0019】
マップマネージャ340は、アプリケーションに1組の豊富な機能を提供し、したがって位置認識型アプリケーション330は地図コードをどう実施すべきかの詳細を知る必要がない。例えば、アプリケーション330は、ユーザが地図上のあるエリアを指し示し、次いでそのデータの緯度および経度、あるいは屋内の地図の場合は屋内の座標系への変換を可能にしたいものと仮定する。マップマネージャ340は、その情報をアプリケーション330に提供する。マップマネージャ340は、アプリケーション330と地図レンダリング技術との間のブローカとして働き、アプリケーションに機能を提供する。そうした機能としては、デバイス上のX/Y画面座標を地図上の緯度/経度/高度の地図座標へマッピングすることが含まれる。例えば、ユーザは、自らの位置を入力するために地図を表示中の画面をクリックすることができる。ユーザの入力に応答して、マップマネージャはX/Y画面座標を地図上の緯度/経度/高度の地図座標へマッピングする。同様に、マップマネージャ340は地図上の緯度/経度/高度の地図座標をX/Y画面座標へマッピングして、アプリケーションが表示中の地図上に動的にレンダリングを行えるようにする。スキーエリアの地図など一部の地図レンダリングにおける高度は、X/Y位置に大きな影響を及ぼすことがある。X/Y画面座標を地図上の緯度/経度/高度の地図座標に変換するには、多くの方法がある。一般に、マップマネージャはX/Y画面座標を受け取り、座標を地図にマッチさせ、次いで、地図の尺度、投影図法および地図の境界線に基づいて緯度/経度/高度座標を提供する。アプリケーションは、地図自体がどのようにしてレンダリングされているか、あるいはどの「投影図法」が使用されているかを理解する必要はない。メルカトル図法、円筒図法、極射影法、格子投影法などの古典的な地図投影図法および特別な投影図法(例えば、スキーエリアの地図やスタジアムの座席図など)を含むが、それだけには限らない多くの異なる地図投影図法が可能である。アプリケーションは、異なる投影図法の間をシームレスに動くことができる。
【0020】
マップマネージャ340はまた、アプリケーション330に、1組の利用可能な地図に関する高位のイベントを供給する。これらのイベントは、アプリケーションが要求する判断基準を満たす地図がいくつか利用可能となっている場合などに、アプリケーションに重要な情報を提供する。アプリケーション330は、表示用の地図を1つだけ使用することに限定されない。例えば、あるアプリケーションは、ある一定の時間は市街地図を使用し、別の時間には地下鉄の地図(例えば、バスの運行経路、地下鉄のトンネルなどを表示)を使用することができる。マップマネージャ340は、地図をその適合性の順序に従ってランク付けする。アプリケーション330から提供された判断基準を満たす地図は利用可能でないが、マップマネージャ340がその判断基準の一部を満たす地図を探し出すことができる場合は、それらの地図を提供することができる。
【0021】
マップマネージャ340はまた、デバイス上への新たな地図の動的プロビジョニングを可能にする。これらの地図は、いつでもデバイスにダウンロードすることができる。例えば、新たな公共輸送路が追加されると、公共交通アプリケーションのために新たな地図をダウンロードすることができる。一実施形態によれば、これらの地図は2つのファイル、すなわちバイナリでマップマネージャからは不透明な1つのファイルと、マップマネージャが理解できる1つのファイルとで表現される。別の実施形態によれば、地図はXMLファイルを使用して表現される。マップマネージャは、XMLファイルを読み、地図をオンデバイスでローカルな地図データストアに追加するのに必要な情報を入手することができる。地図はまた、開発者によって、あるいは別のソースを通して地図ストアに追加することもできる。
【0022】
例示的XML表現を次に示す。
【0023】
【表1】

【0024】
MapProjectionは、地図を表示するのに使用されている図法を参照する。この例では、地図投影法の種類は単純な格子である。MetersPerPixelは、地図の平均解像度を参照する。MapInfoClassは、この地図についての質問に答えるのに必要なカスタムクラスがあるかどうかを参照する。このフィールドは、この地図が表示された場合に呼び出し得るカスタムクラスを開発者がプログラミング環境に含めることを可能にする。同様に、CustomMapRendererは、地図を描くのにカスタムレンダリングエンジンが必要かどうかを参照する。SimpleLatLongRectangleフィールドは、地図を緯度および経度の座標で画定された長方形として識別する。
【0025】
以下の例は、いくつかのカスタムフィールドが使用される様子を示す。
【0026】
【表2】

【0027】
マップマネージャ340は、アプリケーション330が使うかもしれない複数の地図を、利用可能な状態でデバイス上の地図ストア(342)内にもつことができる。マップマネージャ340は、デバイス上の地図ストア342内の利用可能な1組の地図を検索し、使用すべき最適の地図を探す。選択の後、最適の地図が選択されレンダリングされる。
【0028】
図4は、本発明の諸態様による、位置認識型アプリケーションの開発のための対話の状態図である。
【0029】
まず状態410で、地理的な関心地域が画定される。関心地域の選択は、位置認識型アプリケーションが実行(deploy)される前でも後でもよい。さらに、この情報は、いつでもデバイスに送出することができる。関心地域とは、ある地図に関連する予め画定された領域である。関心地域は、画定可能などんな大きさでもよい。例えば、関心地域は、その大きさが1平方メートルでも、あるいはある国全体でもよい。関心地域は、位置認識型アプリケーションの必要に基づいて画定される。例えば、開発中の位置認識型アプリケーションは、子供がいつ学校を出て家に帰るかを判断するものであると仮定する。この具体例では、関心地域は学校を含む地域でよく、別の関心地域は子供の家でよい。関心地域の一部は開発者が選択でき、他の関心地域はユーザが選択することができる。例えば、上述の例などの多くのアプリケーションは、アプリケーションがユーザに提供された後に構成される。上述の例では、親が関心地域を選択することができる。
【0030】
状態420は、地図および地図サーバの選択を示す。開発者は、システム内で利用可能な地図から選択するか、あるいは自ら地図を作成することができる。本発明の一実施形態によれば、様々な位置認識型アプリケーションが同じ地図を使用できるように、利用可能な地図が複数のロケーションアプリケーションに共用される。このようにすると、各位置認識型アプリケーションが自らの地図を開発しなくて済む。ほとんどの場合、地図レンダリングの詳細は、位置認識型アプリケーションの開発者からは見えない。開発者が自らのレンダリングソフトウェアを含めたいと望むのであれば、状態440で開発者は自らのレンダリングソフトウェアを含めることができる。
【0031】
状態440で、開発者は、レンダリングのための自らの選択を設定することもできる。例えば、開発者はアプリケーションの一部にベクターベースのレンダリングエンジンを使用し、アプリケーションの別の部分ではビットマップベースのシステムを使用したいかもしれない。地図エンジンは、多くの異なるソースが提供することができる。エンジンを構築したいと考えるどんな開発者も、プログラミングインターフェースに適合する地図エンジンを供給することができる。各地図エンジンは、開発システムにプラグインされる。
【0032】
状態430で、開発者は、自らのアプリケーション内の関心地域に関連するイベントに応答して実行されるイベントベースの位置コードのプログラミングを行う。このイベントベースのコードは、開発中の位置認識型アプリケーションの種類に依存しており、多くの異なる種類のデータを含むことができる。例えば、あるプログラムは、ユーザが所定の位置に到達した時点である動作を実施するかもしれない。上述の子供を追跡する例では、特定の時点における子供の位置に基づいて家または学校をハイライトする例示的ルーチンのプログラミングが可能である。開発者は、さらにイベントに応答して、地図上にアイテムを配置することもできる。
【0033】
状態450で、位置認識型アプリケーションは、本物のおよび/またはシミュレートされた位置ソースを使用してテストすることができる。システムは、実地に使用される前に試験できるように、シミュレータに位置ソースを提供する。シミュレートされたデータソースを使用すると、位置イベント発生時に開発者のイベントベースの位置コードのテストが可能になる。シミュレートされた位置ソースデータの別の使用法は、予め記録された現実の位置データを「再生」することである。これは、アプリケーションの開発、テストおよびデバッグに有用である。
【0034】
図5は、本発明の諸態様による、例示的関心地域の画定を示す。図5に示すように、2つの関心地域が画定されている。関心地域#1は楕円形の境界領域で画定され、関心地域#2は長方形の境界で画定される。これらの関心地域は所定の幾何学的図形を使用して画定されているが、関心地域は、地域をより明確に画定するどんなやり方で画定することもできる。例えば、関心地域は近辺、郡、特定の道路の間の地域などとして画定することができる。本発明の一実施形態によれば、開発者は1組の予め定義された図形を使用して関心地域を画定する。さらに、ユーザは地図上の地点を指し示し、その地点から広がる半径を提供することで関心地域とすることができる。関心地域はまた、緯度および経度の座標を使用して設定することもできる。
【0035】
図5に示す地図は、通りを含む市内地図を示しているが、地図はどんな種類のものでもよい。地図の例としては、スキー地図、森、公園、またはゴルフコースの地図、建物の平面図、スタジアムの座席図などがある。先に論じたように、関心地域が指定されると、何かが地域を出入りすることがイベントのトリガとなり得る。
【0036】
図示されていないが、関心地域はある特定の種類の位置でもよい。例えば、ある位置認識型アプリケーションは、自らがコーヒーショップまたは映画館に近付いた時点で、そのことを知りたいかもしれない。この例では、システムが知り得た全てのコーヒーショップまたは映画館が関心地域となり得る。さらに多くのコーヒーショップが利用可能となるにつれて、それらの位置はアプリケーションに動的に追加され、したがってアプリケーションがそれらを認識する。他の位置認識型アプリケーションは、関心地域を特定の店、競技場、バス停、オフィスビルなどとして定義するかもしれない。
【0037】
図6は、本発明の諸態様による、位置認識型アプリケーションが使用できる例示的な地図を示す。図示されるように、これらの地図は緯度および経度によって画定される単純な長方形として画定される。4つの地図はそれぞれ、左上の緯度および経度と、右下の緯度および経度を含む。先に図3に関して論じたように、地図は多くの異なるやり方で画定することができる。どんな位置認識型アプリケーションも、それが適切な場合、表示用にこれらの地図を使用することができる。
【0038】
図7は、本発明の諸態様による、位置認識型アプリケーションの例示的なシミュレーションスクリーンショットを示す。シミュレータ内で、小さくより詳細なビューと大域的で全体的なビューとを含む2つの地図ビューが表示されている。地図上には、円形の領域および四角形の領域で表された、予め定義された関心地域が示される。シミュレートされた動作がある地域を出入りすると、開発者は自ら開発した適切なコードが正しく動作しているかどうかを判断することができる。
【0039】
例示的動作環境
図1を参照すると、本発明を実装するための例示的システムの1つは、コンピューティングデバイス100などのコンピューティングデバイスを含む。ごく基本的な構成では、コンピューティングデバイス100は一般に少なくとも1つの処理装置102およびシステムメモリ104を含む。コンピューティングデバイスの厳密な構成および種類に応じて、システムメモリ104は揮発性(例えばRAM)でもよく、非揮発性(例えばROM、フラッシュメモリなど)でもよく、あるいは両者の何らかの組合せでもよい。システムメモリ104は一般に、オペレーティングシステム105および1つまたは複数のアプリケーション106を含み、プログラムデータ107を含むことができる。一実施形態では、アプリケーション106は、モバイルデバイスのための位置認識型アプリケーションを構築するのに使用する、位置認識型プログラミングインターフェース120を含むことができる。この位置認識型プログラミングインターフェースは、マップ選択、管理およびレンダリングインターフェースと統合することができる。この基本構成を、図1に点線108で囲まれた構成要素で示す。
【0040】
コンピューティングデバイス100は、追加の特徴または機能をもつことができる。例えば、コンピューティングデバイス100は例えば磁気ディスク、光ディスク、テープなど追加のデータ記憶装置(着脱式および/または固定式)を含むことができる。このような追加の記憶装置は、図1では着脱式記憶装置109および固定式記憶装置110として示す。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなどの情報の記憶のための任意の方法または技術で実装される揮発性および非揮発性、着脱式および固定式の媒体を含むことができる。システムメモリ104、着脱式記憶装置109および固定式記憶装置110は、いずれもコンピュータ記憶媒体の例である。コンピュータ記憶媒体としては、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、DVDまたは他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは所望の情報を記憶し、コンピューティングデバイス100がアクセスできるようなその他の全ての媒体が含まれるが、それだけには限らない。そのような一切のコンピュータ記憶媒体は、デバイス100の一部となることができる。コンピューティングデバイス100はまた、キーボード、マウス、ペン、音声入力装置、タッチ入力装置など1つ(または複数)の入力装置112をもつことができる。ディスプレイ、スピーカ、プリンタなど1つ(または複数)の出力装置114も含むことができる。
【0041】
コンピューティングデバイス100はまた、デバイスが例えばネットワークを介して他のコンピューティングデバイス118と通信できるようにする通信接続116も含むことができる。通信接続116は、通信媒体の一例である。通信媒体は、一般にコンピュータ可読命令、データ構造、プログラムモジュール、あるいは例えば搬送波または他の搬送機構などの変調データ信号内の他のデータとして実施することができ、任意の情報送達媒体を含む。「変調データ信号」という用語は、信号内に情報が符号化されるように、その1つまたは複数の特徴が設定または改変された信号を意味する。限定ではなく例を示すと、通信媒体は有線ネットワークや直接線接続などの有線媒体と、音響、RF、赤外線およびその他の無線媒体とを含む。ここで使用されるコンピュータ可読媒体という用語は、記憶媒体と通信媒体のどちらも含む。
【0042】
図2は、本発明の例示的一実施形態で使用することができるモバイルコンピューティングデバイスを示す。図2を参照すると、本発明を実施するための1つの例示的なシステムは、モバイルコンピューティングデバイス200などのモバイルコンピューティングデバイスを含む。モバイルコンピューティングデバイス200は、プロセッサ260、メモリ262、ディスプレイ228およびキーパッド232を含む。メモリ262は一般に、揮発性メモリ(例えばRAM)および非揮発性メモリ(例えばROM、フラッシュメモリなど)の両方を含む。モバイルコンピューティングデバイス200は、メモリ262に常駐しプロセッサ260上で実行される、例えばMicrosoft CorporationのWindows(登録商標)CEオペレーティングシステムなどのオペレーティングシステム264を含む。キーパッド232は、プッシュボタン式の数字ダイアルパッド(例えば一般の電話にあるような)でも、マルチキーキーボード(例えば従来型キーボード)でもよい。ディスプレイ228は液晶ディスプレイでも、モバイルコンピューティングデバイスで一般に使われるその他任意の種類のディスプレイでもよい。ディスプレイ228はタッチセンシティブでもよく、その場合は入力装置としても働く。
【0043】
1つ(または複数)のロケーションアプリケーション266など1つまたは複数のアプリケーションプログラムがメモリ262にロードされ、オペレーティングシステム264上で実行される。モバイルコンピューティングデバイス200上には1つまたは複数の位置認識型アプリケーション266が常駐し、位置ベースのアプリケーションに関連する命令を実行するようにプログラムされている。位置認識型アプリケーションは、デバイスのハードウェアまたはソフトウェアに常駐させることができる。モバイルコンピューティングデバイス200はまた、メモリ262内に揮発性および非揮発性記憶装置を含むこともできる。メモリ262はまた、位置ベースの情報の記憶に使用される位置データストア268、および地図ベースの情報の記憶に使用される地図ストア269を含む。位置ストア268は、デバイス上の全ての位置認識型アプリケーション266が使用することができる位置情報を記憶するための大域的な機構である。地図ストア269も、デバイス上の全ての位置認識型アプリケーション266が使用することができる地図情報を記憶するための大域的な機構である。一実施形態によれば、リポジトリ268は位置および地図情報のオンデバイスのキャッシュである。モバイルデバイス200には、2つ以上の位置ストアがあってもよい。例えば、プライベートおよびパブリックの位置データストアがあってもよい。
【0044】
モバイルコンピューティングデバイス200は、1つまたは複数の電池として実装できる電源270を含む。電源270はさらに、ACアダプタあるいは電池を補給または充電する電動格納台(powered docking cradle)などの外部電源を含むことができる。
【0045】
モバイルコンピューティングデバイス200は、2種類のオプションの外部通知機構、すなわちLED240および音声インターフェース274と共に示されている。これらのデバイスは、起動した場合、プロセッサ260および他の構成要素が電池の電力を節約するためにシャットダウンした場合でも通知機能が指示したある持続期間中電源が入ったままであるように、電源270に直接結合することができる。音声インターフェース274は、ユーザとの間の音響信号の送受信に使用される。例えば、音声インターフェース274は音響出力を提供するためにスピーカに結合され、例えば電話による会話が容易になるように、音響入力を受信するためにマイクロフォンに結合できる。
【0046】
モバイルコンピューティングデバイス200はまた、通信を送受する機能を果たす、無線インターフェース層などの1つ(または複数)の通信接続も含む。通信接続272は、モバイルコンピューティングデバイス200と外界との間の無線接続性を促進する。一実施形態によれば、通信接続272との間の送受信は、オペレーティングシステム264の制御下で実施される。
【0047】
図8は、本発明の諸態様による、位置認識型開発システム800を全般的に示した機能ブロック図である。サーバ810およびコンピューティングデバイス830は、図1に関して前述したようなコンピューティングデバイスであり、モバイルデバイス820は図2に関して前述したようなモバイルデバイスである。
【0048】
一般に、ユーザはコンピューティングデバイス830などのコンピューティングデバイスを使用して位置認識型アプリケーションを開発する。しかし、位置認識型アプリケーションは、モバイルデバイス820などのモバイルデバイスを使用して開発することもできる。位置認識型プログラミング環境832は、開発者に位置認識型アプリケーションを開発するための1組のプログラミングインターフェースを提供するように構成される。位置認識型プログラミング環境832は、サーバ810と通信するように構成される。一実施形態によれば、サーバ810はコンピューティングデバイス830に位置ストア812からの位置情報と、地図ストア813からの地図情報とを提供するように構成される。サーバ810またはモバイルデバイスはまた、位置認識型アプリケーションを開発中に位置ソースをシミュレートするように構成することもできる。例えば、シミュレートされた位置ソースをモバイルデバイス上で実行させ、GPSソースなどの入力をシミュレートすることができる。コンピューティングデバイスは、いくつかのクライアントサーバプロトコルのうちのいずれか1つを使用して通信することができる。
【0049】
モバイルデバイス820は、位置認識型プログラミング環境832を使用して開発された位置認識型アプリケーション822を含む。モバイルデバイス820には、2つ以上の位置認識型アプリケーションを含むことができる。モバイルデバイス820には、N個の位置ソース821(1−N)が接続されている。これらの位置ソースはオンデバイスもオフデバイスも含み、前述のようにロケーションアプリケーション822に位置データを提供する。位置ストア824は、モバイルデバイス820上の全ての位置認識型アプリケーションがアクセスすることのできる位置情報を含む。地図ストア825は、モバイルデバイス820上の全ての位置認識型アプリケーションがアクセスすることのできる地図情報を含む。例えば、位置ストア824および地図ストア825は、これらのアプリケーションが共用することのできる地図、レンダリングエンジン、およびその他のあらゆる情報を含むことができる。
【0050】
セルラー/ポケットベルネットワーク850は、無線デバイスとの間のメッセージの送達および受信を担うネットワークである。セルラー/ポケットベルネットワーク850は、無線および有線のどちらの構成要素も含むことができる。例えば、セルラー/ポケットベルネットワークは、有線電話ネットワークにリンクされたセルラーアンテナを含んでもよい。一般に、セルラーアンテナは、携帯電話との間の通信や、長距離通信リンクなどを搬送する。無線デバイスはまた、モバイルデバイス用としてますます利用可能となっているWi−Fiカードなどのハードウェアを使用してWANやLANなどと直接接続することができる。
【0051】
ゲートウェイ860は、セルラー/ポケットベルネットワーク850とWAN/LAN840との間のメッセージのルーティングを行う。例えば、あるコンピュータユーザは携帯電話に宛てたメッセージを送信するかもしれない。ゲートウェイ860は、WAN/LAN840からセルラー/ポケットベルネットワーク850へメッセージを運ぶ手段を提供する。逆に、セルラーネットワークに接続したデバイスをもつユーザがウェブをブラウズしているかもしれない。ゲートウェイ860は、WAN/LAN840とセルラー/ポケットベルネットワーク850との間のHTTPメッセージの送受信を可能にする。
【0052】
上述の仕様、例およびデータは、本発明の構成の製造および使用に関する完全な説明を提供する。本発明の精神および範囲から逸脱することなく本発明の多くの実施形態が作成できるため、本発明は添付の特許請求の範囲にある。
【図面の簡単な説明】
【0053】
【図1】本発明の例示的実施形態で使用できる例示的なコンピューティングデバイスを示す図である。
【図2】本発明の例示的実施形態で使用できる例示的なコンピューティングデバイスを示す図である。
【図3】位置認識型システムを示す図である。
【図4】位置認識型アプリケーションの開発のための対話の状態図である。
【図5】例示的関心地域の画定を示す図である。
【図6】位置認識型アプリケーションが使用できる例示的な地図を示す図である。
【図7】位置認識型アプリケーションの例示的なシミュレーションスクリーンショットを示す図である。
【図8】本発明の諸態様による位置認識型開発システムを全般的に示した機能ブロック図である。
【符号の説明】
【0054】
100 コンピューティングデバイス
102 処理装置
104 システムメモリ
105 オペレーティングシステム
106 アプリケーション
107 プログラムデータ
109 着脱式記憶装置
110 固定式記憶装置
112 1つ(または複数)の入力装置
114 1つ(または複数)の出力装置
116 1つ(または複数)の通信接続
118 他のコンピューティングデバイス
120 位置認識型プログラミングインターフェース

【特許請求の範囲】
【請求項1】
位置認識型アプリケーションのためのシステムであって、
デバイス上の様々な位置認識型アプリケーションが共用できる地図情報および位置情報を含むデータストアと、
アイテムの位置を含む少なくとも1つの位置ソースから位置情報を受信し、関心地域に対する前記アイテムの相対位置に応答して位置イベントを生成するように構成されたロケーションマネージャと、
前記データストアに結合され、地図情報を抽出し地図の表示を含む地図動作を管理するように構成され、2つ以上の地図レンダリングエンジンを利用することができるマップマネージャと、
前記ロケーションマネージャおよび前記マップマネージャと結合され、前記位置イベントに応答してイベント駆動型コードを実行し、前記抽出された地図情報と対話するように構成された位置認識型アプリケーションと
を備えることを特徴とする位置認識型アプリケーションのためのシステム。
【請求項2】
前記データストアは位置ストアと地図ストアとを備え、前記地図ストアは地図に関する情報を含み、前記位置ストアは関心地域に関する情報を含むことを特徴とする請求項1に記載のシステム。
【請求項3】
前記少なくとも1つの位置ソースは、少なくとも1つの近傍位置ソースと遠隔位置ソースとを含むことを特徴とする請求項1に記載のシステム。
【請求項4】
前記少なくとも1つの位置ソースは、GPS受信機、ユーザ入力、電話システム、RFIDタグ、およびネットワーク上のデバイスにプッシュまたはプルされた位置データを含むグループから選択されることを特徴とする請求項3に記載のシステム。
【請求項5】
前記ロケーションマネージャはさらに、1個からN個のアイテムについて位置情報を管理するように構成されることを特徴とする請求項3に記載のシステム。
【請求項6】
前記位置イベントの生成は、前記アイテムの位置が前記関心地域に入ったという判断、前記アイテムの位置が前記関心地域を出たという判断、および関心地域内における位置ソースの動きの判断のうちの少なくとも1つのイベントに応答して位置イベントを生成することを含むことを特徴とする請求項1に記載のシステム。
【請求項7】
前記位置認識型アプリケーションはさらに、前記マップマネージャに推奨地図解像度を提供するように構成されることを特徴とする請求項1に記載のシステム。
【請求項8】
前記マップマネージャはさらに、ユーザ入力を受信し、前記ユーザ入力を地図上の位置に変換するように構成されることを特徴とする請求項1に記載のシステム。
【請求項9】
前記位置認識型アプリケーションはさらに、前記マップマネージャに地図上に表示できる少なくとも1つのオブジェクトを提供するように構成されることを特徴とする請求項7に記載のシステム。
【請求項10】
前記マップマネージャは前記位置認識型アプリケーションに1組の地図を供給し、位置認識型アプリケーションは重み付き判断基準に基づいて供給された1組の地図から表示すべき地図を判断することを特徴とする請求項9に記載のシステム。
【請求項11】
前記データストアはさらに、動的プロビジョニングができるように構成されることを特徴とする請求項1に記載のシステム。
【請求項12】
前記地図情報は、XML表現を使用した各地図の表現を含むことを特徴とする請求項11に記載のシステム。
【請求項13】
前記表現は、地図の投影図法、解像度、地図を表示するのに使用した地図レンダリングエンジンの指示、および前記地図が含む地域を含むことを特徴とする請求項11に記載のシステム。
【請求項14】
位置認識型アプリケーションのためのコンピュータ実行方法であって、
アイテムがいつ関心地域を出入りし、関心地域内を動くかを判断するステップと、
前記判断に応答して位置イベントを生成するステップと、
前記イベントに応答して位置認識型アプリケーションが供給するイベント駆動型コードを実行するステップと、
地図ストアから、他の位置認識型アプリケーションが共用できる地図を選択するステップと、
少なくとも2つの地図レンダリングエンジンから選択された地図レンダリングエンジンを使用して前記地図を表示するステップと
を含むことを特徴とする方法。
【請求項15】
地図上の予め定義された地域である関心地域を画定するステップをさらに含むことを特徴とする請求項14に記載の方法。
【請求項16】
前記アイテムがいつ関心地域を出入りするかを判断するステップは、少なくとも1つの位置ソースから位置情報を取得し、前記アイテムが前記関心地域内にあるかどうかを判断するステップを含むことを特徴とする請求項15に記載の方法。
【請求項17】
位置イベントを生成するステップは、前記アイテムの位置が前記関心地域に入ったという判断、前記アイテムの位置が前記関心地域を出たという判断、および前記アイテムの位置が関心地域内で指定された距離だけ動いたという判断のうちの少なくとも1つのイベントに応答して位置イベントを生成するステップを含むことを特徴とする請求項15に記載の方法。
【請求項18】
前記地図にオーバーレイするために前記地図レンダリングエンジンに少なくとも1つのオブジェクトを供給するステップをさらに含むことを特徴とする請求項15に記載の方法。
【請求項19】
前記地図ストアに対して動的プロビジョニングを行うステップをさらに含むことを特徴とする請求項15に記載の方法。
【請求項20】
前記地図は、XML表現を使用したその地図の表現を含むことを特徴とする請求項15に記載の方法。
【請求項21】
前記表現は、地図の投影図法、解像度、地図を表示するのに使用した地図レンダリングエンジンの指示、および前記地図が含む地域を含むことを特徴とする請求項20に記載の方法。
【請求項22】
位置認識型アプリケーションのためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、前記命令は
関心地域を画定する命令と、
位置ソースからアイテムの位置を取得し、前記位置を他の位置認識型アプリケーションが共用できる位置ストアに記憶する命令と、
関心地域の1つの中にいつ前記アイテムが存在するかを判断する命令と、
前記アイテムが関心地域の1つの中に存在すると判断されたとき位置イベントを生成する命令と、
前記位置イベントに応答して位置認識型アプリケーションに関連するイベント駆動型コードを実行する命令と、
地図ストアから、他の位置認識型アプリケーションが共用できる地図を選択する命令と、
少なくとも2つの地図レンダリングエンジンから選択された地図レンダリングエンジンを使用して前記地図を表示する命令と
を含むことを特徴とするコンピュータ可読媒体。
【請求項23】
前記位置認識型アプリケーションが実行された後に関心地域を画定する命令をさらに含むことを特徴とする請求項22に記載のコンピュータ可読媒体。
【請求項24】
前記アイテムがいつ関心地域の1つの外に存在するかを判断し、前記アイテムが外に存在するという判断に応答して前記位置イベントを生成する命令をさらに含むことを特徴とする請求項23に記載のコンピュータ可読媒体。
【請求項25】
前記地図にオーバーレイするために前記地図レンダリングエンジンに少なくとも1つのオブジェクトを供給する命令をさらに含むことを特徴とする請求項22に記載のコンピュータ可読媒体。
【請求項26】
前記地図ストアに対して動的プロビジョニングを行う命令をさらに含むことを特徴とする請求項22に記載のコンピュータ可読媒体。
【請求項27】
前記地図は、XML表現を使用したその地図の表現を含むことを特徴とする請求項22に記載のコンピュータ可読媒体。
【請求項28】
前記表現は、地図の投影図法、解像度、地図を表示するのに使用される地図レンダリングエンジンの表示、および前記地図が含む地域を含むことを特徴とする請求項27に記載のコンピュータ可読媒体。
【請求項29】
前記地図ストアから前記地図を選択する命令は、位置認識型アプリケーションから受け取った重み付き判断基準に応答して最適な地図を判断する命令を含むことを特徴とする請求項22に記載のコンピュータ可読媒体。
【請求項30】
前記地図レンダリングエンジンを使用して前記地図を表示する命令は、レンダリングされる地図の種類に応じて複数の地図レンダリングエンジンを切り替える命令を含むことを特徴とする請求項22に記載のコンピュータ可読媒体。
【請求項31】
前記地図レンダリングエンジンを使用して前記地図を表示する命令は、レンダリングされる地図の種類に応じて、メルカトル図法、極射影法、格子投影法およびカスタムな図法のうち少なくとも2つの投影図法から選択された投影図法を選択する命令を含むことを特徴とする請求項30に記載のコンピュータ可読媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2006−153863(P2006−153863A)
【公開日】平成18年6月15日(2006.6.15)
【国際特許分類】
【出願番号】特願2005−312951(P2005−312951)
【出願日】平成17年10月27日(2005.10.27)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】