【文献】
FOLLIN J−M et al.,”Multi−resolution extension for transmission of geodata in a mobile context”,「COMPUTERS AND GEOSCIENCES」,Elsevier Ltd.,2005.03,Vol.31,No.2,p.179−188
【文献】
青木大我,”「Google Maps」で陰影付きの地形図が表示可能に”,[online],2007年11月28日,株式会社インプレス,Internet Watch,<URL: http://internet.watch.impress.co.jp/cda/news/2007/11/28/17662.html>
【文献】
鈴木一生,”Googleマップで路線図”,[online],2009年4月3日,グーグル株式会社, Google Japan Blog,<URL: http://japan.googleblog.com/2009/04/google_03.html>
(58)【調査した分野】(Int.Cl.,DB名)
前記修正指示の生成が、前記識別された地図要素に対応する深さ指示を、前記修正指示の中に提供することを更に含み、前記深さ指示が、前記識別された地図要素が少なくとも1つの他の地図要素も含む地理的領域の内部で描画される順序を示し、前記識別された地図要素および前記少なくとも1つの他の地図要素が重なり合い、前記少なくとも1つの他の地図要素が深さ指示を備える、請求項2に記載の方法。
前記第1の地図タイプおよび前記第2の地図タイプの各々が、基本図、地形図、路線図、および道路交通現況図のうちの1つから選択される、請求項7に記載のコンピューティングデバイス。
【発明を実施するための形態】
【0010】
以下に検討するシステムおよび方法の実施形態において、地図サーバは、地図画像を描画するための地図データをクライアントデバイスに対して効率的に提供する。一部の実施形態によれば、地図サーバは、あるエリアまたは地理的領域に対応する第1の地図画像(例えば、基本図画像)を描画するために、地図データをクライアントデバイスに提供した後で、同じエリアに対応する第2の、そして異なった地図画像(例えば、道路交通現況図)を描画するために、修正データをクライアントデバイスに提供する。クライアントデバイスは次に、第1の地図画像を描画するために以前に提供された地図データと、修正データとを用いて第2の地図画像を描画し得るが、地図サーバは、必ずしも、第1の地図画像および第2の地図画像の双方を描画するに際して用いられる地図データをクライアントデバイスに対して2回以上提供する必要はない。シナリオ次第で、修正データは、以前に提供された地図データに対する1つ以上の追加、以前に提供された地図データの1つのまたはいくつかの部分の削除、または以前に提供された地図データの1つのまたはいくつかの部分の修正を含み得る。
【0011】
ある実施形態では、地図サーバは、地図データを非ラスター形式で提供し、クライアントは、この地図データの一部または全部を解釈して、第1の地図画像および第2の地図画像をそれぞれのラスター画像として生成する。地図データは更に、個々のまたは集団的な地図要素と一緒に表示される地図ラベルを指定するためにテキストデータを含み得る。第1の地図画像を描画するために、クライアントデバイスは、通信ネットワークを介して地図サーバから地図データを要求し得るが、地図サーバはこれに応答して、地図コンテンツを記述する地図データを、ベクトルグラフィックス形式で提供し得る。この地図データは、様々な幾何学的形状を(例えば、点および点を接続する経路の数学的記述を用いて)指定し、道路、建物、公園、水域などの様々な地図要素を描画するためにこれらの形状をどのように位置付けすべきかを示し得る。例えば、線セグメントのラスター画像を形成する各々の画素を指定するのではなくて、線セグメントのベクトルベース記述が、線セグメントの2つの端点を指定して、これら2つの端点が直線で接続されることを示し得る。地図要素のベクトルベース記述は、本明細書では、ベクトル記述子または単にベクトルと呼ばれ得るが、1つまたはいくつかのベクトル記述子の集合は、ベクトルデータと呼ばれ得る。更に、一部のシナリオにおける個々の地図要素(例えば、建物)またはいくつかの地図要素の集団(例えば、建物、公園、自転車専用通路、および大学の構内の歩行者専用通路)は、地図特徴部(または単に特徴部)を画定し得る。ある実施形態では、地図特徴部は、地図サーバおよび地図クライアントが識別目的で利用し得る固有の識別子を割り当てられる。一般に、地図特徴部は、1つ以上のベクトル記述子を用いて記述され得る。
【0012】
クライアントデバイスは、例えば、第1の地図画像および第2の地図画像を描画するための地図データを、それぞれのユーザ指令に応答して要求し得る。これらのユーザ指令は、異なった地図タイプ、異なったズームレベルなどの選択を示し得る。ある例示のシナリオによれば、ユーザは、地理的領域と、基本図タイプ、例えば、道路、街路、主要な目印などを図示する地図のタイプと、を選択する。クライアントデバイスは、地図画像を描画するための要求を生成して、この要求を地図サーバに送信し、地図サーバは、これに応答して、地図データをベクトルグラフィックス形式(または、クライアントデバイスのところでラスター画像を描画する目的に適した他の非ラスター形式)で提供する。この地図データは、いくつかのベクトル記述子と、場合によっては、スタイルデータ、ラベルデータなどの追加のデータとを含み得る。より具体的には、ラベルデータは、情報交換用米国標準コード(ASCII)形式、ユニコード形式または他のなんらかの適切な文字形式で文字を含み得る。クライアントデバイスは次に、地図データを解釈して、地図画像を描画して、地図画像を表示デバイス上に表示する。上記のシナリオを継続するためには、ユーザは次に、同じ地理的領域に対する路線図を選択し得るが、クライアントデバイスは、これに応答して、路線図に対応する新しい地図画像が生成されるとの指示を生成して、この指示を地図サーバに送信し得る。1つの実装例によれば、クライアントデバイスは、この新しいタイプの地図データに対する要求(例えば、「領域Rの路線図の地図データを提供せよ」)を生成し、地図サーバは、クライアントデバイスとの以前の通信をチェックして、どの種類の地図データが、以前にクライアントデバイスに送られたか、したがって、ここで既に利用可能であるかを決定する。別の実装例では、クライアントデバイスは、新しいタイプの地図データを要求する(例えば、「自分が、同じズームレベルで領域Rの基本図に対する地図データを既に有していることを考えれば、領域Rの路線図に対する地図データを提供せよ」)ことに加えて、選択された領域に対するどの種類の地図データがクライアントデバイスのところで既に利用可能であるかを指定する。地図サーバは、この場合、たとえ存在するとしても、どの地図データがクライアントデバイスに対して以前に送られたかを知る必要はない。より一般的には、地図サーバとクライアントデバイスとの間のトランザクションの履歴は、地図サーバおよび/またはクライアントデバイスによって維持される。
【0013】
地図サーバは次に、どの地図要素およびラベルを、クライアントデバイスのところで既に利用可能な地図データに対して追加しなければならないか、これから除去しなければならないか、その中で修正しなければならないかを決定し得る。例えば、地図サーバは、ある領域およびあるズームレベルに対する基本図が、どのように、同じ領域および同じズームレベルに対する路線図と異なるか決定し、適切な修正指示を生成し得る。例えば、この修正指示は、基本図画像には含まれない地下鉄路線を描画するためのベクトル記述子を含み得る。地図サーバは次に、修正指示をクライアントデバイスに提供して、基本図画像を描画するための地図データと修正データを少なくとも部分的に用いて路線図画像を描画する。
【0014】
地図画像を描画するための地図データが効率的にクライアントデバイスに提供されるこれらおよび他の例示のシナリオは、添付図面を参照して更に検討される。図の一部は、他の要素をより明瞭に示す目的でのある要素の省略によって簡略化されている。一部の図における要素のこのような省略は、対応する明細書中で明示的に描写され得る場合を除き、例示の実施形態のどれにおいても特定の要素の存在や不在を必ずしも示すものではない。
【0015】
図1を参照すると、地図データを転送するための技法は、システム10の中で実装され得る。ある実施形態では、システム10は、地図サーバ12と、ネットワーク16を介して地図サーバ12に通信可能に連結されるクライアントデバイス14と、地図サーバ12に通信可能に連結される地図データベース18と、を含む。ネットワーク16は、インターネットなどの広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)、または他のなんらかの適切なタイプのネットワークであり得る。実施形態次第で、地図データベース18は、
図1に図示するように、ネットワーク16を介して、または別の通信リンクを介して地図サーバ12に連結され得る。簡略化のために、地図サーバ12、クライアントデバイス14、および地図データベース18の1つの例だけが、
図1に図示されている。しかしながら、システム10が、2つ以上の地図サーバ12、2つ以上のクライアントデバイス14、および/または2つ以上の地図データベース18を含み得る。
【0016】
地図サーバ12は、プロセッサ20と、例えば、プロセッサ20上で直接的に(例えば、コンパイルされたコードとして)または間接的に(例えば、プロセッサ20上で実行される別のアプリケーションによって解釈されるスクリプトとして)実行可能であり得るコンピュータ命令という形態で地図コントローラ30を記憶するコンピュータ読み取り可能メモリ22と、を含み得る。コンピュータ読み取り可能メモリ22は、コンピュータ命令と、コンピュータ命令が実行時間に動作する際に基づくデータとを記憶する揮発性メモリ(例えば、ランダムアクセスメモリ、すなわちRAM)と、ある実施形態では、例えばハードディスクなどの持続性メモリと、を含み得る。ある実施形態では、地図コントローラ30は、クライアントデバイス14に対して地図コンテンツとして提供される1つ以上の地図要素を含む、様々な地図要素および/または地図特徴部に対するベクトルデータを生成する動的特徴部コントローラ32を含む。動的特徴部コントローラ32はまた、ある地図画像の同じ地理的エリアに対応する別の地図画像に対するベクトルベース記述の相違を決定し、適切な修正指示を生成し、この修正指示をクライアントデバイス12に提供するように構成し得る。言い換えれば、ある地図画像の完全なベクトルベース記述を提供するのではなくて、動的特徴部コントローラ32は、別の地図画像の以前に提供されたベクトルベース記述の修正の記述を効果的に提供することが可能である。
【0017】
修正指示を生成するために、動的特徴部コントローラ32は、ある実施形態に従って、ある地図画像に対応するベクトルデータの直列化された表現を、別の地図画像に対応するベクトルデータの直列化された表現と比較する。例えば、動的特徴部コントローラ32は、ズームレベルZにおける領域Rの基本図に対するベクトルデータを要求し、これに応答して、地図サーバ18は、一連のベクトル記述子V
1、V
2、V
5、・・・、V
Nを提供し得る。別のときに、動的特徴部コントローラ32は、ズームレベルZにおける領域Rの路線図に対するベクトルデータを要求し、地図サーバ18は、これに応答して、一連のベクトル記述子V
1、V
3、・・・、V
Lを提供し得る。ベクトル記述子のこれら2つの集合に基づいて、動的特徴部コントローラ32は、ズームレベルZにおける領域Rに対して、(i)基本図および路線図の双方がベクトル記述子V
1に対応する地図要素を含むことと、(ii)ベクトル記述子V
2およびV
5に対応する地図要素を基本図は含むが路線図は含まないことと、(iii)ベクトル記述子V
3に対応する地図要素を路線図は含むが基本図は含まないことと、を決定する。動的特徴部コントローラ32は、基本図画像を描画するために以前に提供されたベクトルデータを用いて路線図画像を生成するために、ベクトル記述子V
3が、この以前に提供されたベクトルデータに追加され、一方、ベクトル記述子V
2およびV
5が、この以前に提供されたベクトルデータから除去されることを示す修正指示を生成し得る。より具体的には、動的特徴部コントローラ32は、各々が動作(例えば、追加、除去)および動作対象(例えば、ベクトル記述子、地図特徴部、または地図要素)を識別する、1つ以上の追加指示および1つ以上の除去指示を含む修正指示を生成し得る。
【0018】
更に、一部の実施形態では、動的特徴部コントローラ32は、第1の地図画像および第2の地図画像の双方を生成するときにある地図要素が描画されるとはいえ、この地図要素の1つ以上のプロパティを修正して、第2の地図画像を描画する際にこの地図要素を再使用しなければならないことを決定し得る。例えば、一部または全部の地図要素が、これらの地図要素を、同じエリア中の部分的にまたは完全に重なり合う他の地図要素に対して位置付けることを示すそれぞれの深さ値と関連付けられ得る。より具体的な例として、道路のセグメントを描き、かつベクトル記述子V
iに対応する地図要素は、基本図画像の中では深さD
1のところで描画され得るが、路線図画像の中では深さD
2のところで描画され得る。このシナリオにおいて、動的特徴部コントローラ32は、クライアントデバイス14に以前に提供されたベクトル記述子V
iと関連付けられた深さは深さD
2に更新されるべきであることを示す修正指示を生成し得る。
【0019】
また更に、ベクトルデータに加えて、動的特徴部コントローラ32は、追加されたまたは修正された地図特徴部に対するラベルデータを、修正指示の一部としてまたは、代替例では、個別の指示として提供し得る。ラベルデータは、なんらかの適切な形式での文字と、一部の実装例では、対応するラベルが属する地図特徴部または地図特徴部のグループの識別子と、を含み得る。
【0020】
一部の実施形態では、ベクトルデータに加えて、地図コントローラ30は、どのようにベクトルデータを描画すべきであるかを示すスタイルデータを提供し得る。より特定的には、スタイルデータは、線の太さ(例えば、画素の中の幅)、線の色、1つ以上の充填色などの特徴またはプロパティを記述し得る。ある実施形態では、スタイルデータは、ベクトルデータに適用され得る様々な視覚スタイルに対して提供される。地図サーバはまた、どの視覚スタイルをクライアントデバイスは地図要素の様々なベクトルベースの記述(本明細書ではベクトル記述子または単にベクトルとも呼ばれる)に適用すべきであるかを指定し得る。更に、一部の実施形態では、地図サーバは、どの視覚スタイルが、地形、路線、交通、自転車トレイルなどの特定の地図タイプに対する地図要素のベクトルベースの記述に当てはまるかを示す。この目的のために、各々がそれぞれの固有の識別子によって識別されるいくつかのスタイルが、定義され得る。
【0021】
地図コントローラ30は、ある地理的領域およびズームレベルに対する、ベクトルデータなどの地図データを非ラスター形式でクライアントデバイス14に対して、実施形態次第で1つの電子メッセージまたは一連の電子メッセージの中で提供し得る。更に、ある実施形態では、地図コントローラ30は、地図データを地図タイル記述子の集合として生成し、これにより各々の地図タイル記述子が、地図タイル、すなわちある大きさ(例えば、256画素X256画素)の地図画像の一部を記述するようにする。個々の地図タイルによって表される地理的領域の大きさは、この地図タイルが関連付けられる相手側のズームレベルによって異なり得るため、より低いズームレベルでの1つの地図タイルは、より高いズームレベルでの1つの地図タイルよりも大きい地理的エリアを図示する。地図コントローラ30は、ベクトルグラフィックス形式に従って各々の地図タイル記述子を生成し、
図1のクライアントデバイス14などのクライアントデバイスは、各々のタイルに対するラスター画像を局所的に生成し得る。
【0022】
図1を引き続き参照すると、クライアントデバイス14は、命令を実行するプロセッサ50と、命令およびデータを記憶するメモリ52とを含み得る。クライアントデバイス14はまた、それぞれ、入力デバイス54と、ユーザからの入力を受信してユーザに出力を提供する出力デバイス56と、を含み得る。入力デバイス54は、キーボード、マウス、およびタッチ画面のうちの1つ以上を含み、出力デバイス56は、例えば、タッチ画面や「通常」の(出力だけの)画面などの表示装置またはモニターデバイスを含み得る。クライアントデバイス14は、デバイスドライバ、オペレーティングシステム(OS)イベントハンドラなどの様々なソフトウエアコンポーネントを含んで、入力デバイス54および出力デバイス56を制御し、これにより、対話型ユーザインターフェースを実装し得る。更に、プロセッサ50上で実行されるソフトウエアアプリケーションは、これらのソフトウエアコンポーネントを利用して、アプリケーション特有のユーザインターフェースを提供する。
【0023】
実施形態次第で、クライアントデバイス14は、デスクトップコンピュータ、ラップトップコンピュータ、またはタブレットPCなどのパソコン、ワークステーション、スマートフォンなどの携帯式通信デバイス、または他のいずれかの適切なコンピューティングデバイスであり得る。ある実施形態では、クライアントデバイス14は、ある計算機能および/または記憶機能を別のコンピューティングデバイスに依存するいわゆるシンクライアントである。例えば、1つのこのような実施形態では、メモリ52は、RAMなどの揮発性メモリだけを含み、持続性メモリを有するプログラムおよび/または記憶ユニットは、クライアントデバイス14の外部にある。別の実施形態では、メモリ52は、揮発性メモリコンポーネントと持続性メモリコンポーネントとの双方を含む。
【0024】
ブラウザアプリケーション60は、プロセッサ50上で実行されるコンピュータ読み取り可能命令の集合を含み得る。一般に、ブラウザアプリケーション60は、テキスト、画像、埋込みビデオなどのコンテンツと、ハイパーテキストマークアップ言語(HTML)などのマークアップ言語での命令とを含むウエブページにアクセスして、マークアップ言語での命令に従って出力デバイス56上にこれらのコンテンツを描画する。この目的のために、ブラウザアプリケーション60は、ハイパーテキストトランスファープロトコル(HTTP)に適合するデータパケットを生成して処理するための機能を実装し、HTMLコンテンツを解析し、セキュア・ソケット・レイヤー(SSL)プロトコルに従ってデータを符号化し、デジタル証明書などを要求して検証し、かつウエブページデータをナビゲートし、描画し、管理することに関連する様々なユーザ指令を受信するためのユーザインターフェース機能を実施する。一部の実施形態では、ブラウザアプリケーション60は、ウエブページに提供されているスクリプト言語(例えば、javascript)で命令を解釈するように構成されている。
【0025】
動的地図描画エンジン62は、ブラウザアプリケーション60のコンポーネントとして実行され得る。しかしながら、地図描画エンジン62に類似したソフトウエアモジュールが、独立型アプリケーションとしてまたは別のアプリケーションのコンポーネントとして実行され得る実施形態もある。実施形態次第で、動的地図描画エンジン62は、プラグイン(例えば、ブラウザアプリケーション60の機能性を拡張してプロセッサ50上で実行されるコンパイルされた命令の集合)、スクリプト(例えば、実行時にブラウザアプリケーション60によって解釈されるスクリプト言語での命令の集合)、または別の適切なソフトウエアコンポーネントであり得る。1つの例示のシナリオにおいては、動的地図描画エンジン62は、は、クライアントデバイス14を動作させているユーザが、対話型埋込み地図を含むウエブページを訪問するときにダウンロードされる。より具体的には、ウエブページは、オンラインの地図サーバへの第1のハイパーリンクおよびある地理的位置と、この第1のハイパーリンクに従ってこのオンライン地図サーバから受信された地図データを描画するために必要とされる動的地図描画エンジン62のコピーへの第2のハイパーリンクと、を含み得る。
【0026】
動的地図描画エンジン62は、例えば、ブラウザアプリケーション60のユーザインターフェースを介して対話型制御を提供し得る。対話型制御は、ユーザが、地理的領域もしくはエリア、地図タイプ(例えば、基本図、道路交通現況図、路線図)、ズームレベルなどを選択することを可能とし得る。ある例示のシナリオにおいては、ユーザは最初に、地理的領域の基本図を要求し、次に同じ領域の別のタイプの地図を要求する。動的地図描画エンジン62は、ユーザ指令に応答して、地図データをベクトルグラフィックス形式で要求して受信し得る。
【0027】
動作中、動的地図描画エンジン62は、ベクトルデータ(および、一部の実施形態では、スタイルデータ)を地図サーバ12から受信し、対応する地図画像を受信したベクトルデータを用いて描画し、かつこの地図画像を、ブラウザアプリケーション60によって割り当てられたある領域の内部に表示させる。例えば、ブラウザアプリケーション60は、地図画像を表示するためのHTML5のカンバス要素を作成し得る。動的地図描画エンジン62はまた、別の地図画像を描画するための受信されたベクトルデータに対する1つ以上の修正を示す修正指示を、地図サーバ12から受信し得る。
【0028】
簡単にするために、クライアントデバイス14は、1つのプロセッサ50で図示されている。しかしながら、クライアントデバイス14は、他の実施形態では、例えば、出力デバイス56での画像描画を容易にするように構成されたグラフィックス処理ユニット(GPU)などの追加の処理ユニット(図示せず)を含み得る。更に、ある実施形態では、ブラウザアプリケーション60は、効率的に地図画像を描画するためのグラフィックス機能のライブラリを利用し得る。例えば、メモリ52は、ブラウザアプリケーション60を含む、クライアント14で実行される様々なアプリケーションがアプリケーションプログラミングインターフェース(API)を介してアクセスし得るグラフィックスを描画するための機能を有する、OpenGL(登録商標)ライブラリまたはDirect3D(登録商標)ライブラリなどのプラグインを記憶し得る。別の実施形態では、メモリ52は、例えばWebGLなどのブラウザアプリケーションにとって特に適切なプラグインを記憶する。また、一部の実施形態では、メモリ52は、出力デバイス56を介して画像の効率的な描画を可能とする更なるソフトウエアコンポーネントを記憶する。例えば、メモリ52は、Adobe(登録商標)Flash(登録商標)プラグインまたはO3Dプラグインを記憶し得る。
【0029】
一般に、動的地図描画エンジン62はいずれかの適切なアプリケーションで動作することが可能であることが分かっている。例えば、クライアントデバイス70は、動的地図描画エンジン62がマッピングアプリケーション74で動作する、例えばスマートフォンなどの携帯デバイスであり得る。ブラウザアプリケーション60に類似して、マッピングアプリケーション74は、メモリ72に記憶され、かつクライアントデバイス70(図示せず)の1つ以上のプロセッサで実行可能な命令の集合を含み得る。一部の実施形態では、マッピングアプリケーション74は、クライアントデバイス70で実行されるブラウザアプリケーションによって(例えば、対応するブラウザAPIを介して)提供されるネットワーク機能を利用する。別の実装例では、マッピングアプリケーション74は、地図サーバ12にアクセスするためにTCP、IP、HTTPなどをサポートする通信スタックなどの少なくとも部分的なブラウザ機能性を含む。
【0030】
次に、
図1のシステムまたは類似の環境の中での地図サーバおよびクライアントデバイスの動作をより良く解説するために、いくつかのシナリオを、
図2〜6に図示する相互作用図を参照して考える。特に、ある領域の2つの地図画像を描画するための地図サーバとクライアントデバイスとの間での情報の例示の交換を、
図2を参照して検討し、その後で、いくつかの具体的なシナリオを検討するが、これらのシナリオとは、追加の地図要素を描画するための修正指示を提供すること(
図3)、地図特徴部または地図要素が描画される深さを修正するための修正指示を提供すること(
図4)、以前に提供された地図データに含まれる地図特徴部または地図要素を除去するための修正指示を提供すること(
図5)、いくつかの地図要素と関連付けられた複合した地図特徴部を修正するための修正指示を提供すること(
図6)、である。
【0031】
図2を参照すると、例示のメッセージ交換100には、(
図1のクライアント14などの)クライアントデバイスに含まれるまたは別様に関連付けられたユーザインターフェース102と、クライアントデバイスで動作する動的地図描画エンジン104と、(
図1の地図サーバ12などの)サーバ106と、に関連する。戻って
図1を参照すると、ユーザインターフェースはブラウザ60によって提供され、一方、動的地図描画エンジン104およびサーバ106は、それぞれコンポーネント62および12に実装され得る。
【0032】
ユーザ指令に応答して、ユーザインターフェース102は、ある領域R
1の地図データに対する要求110を生成して、この要求を動的地図描画エンジン104に提供する。要求110は、例えば、コンポーネント102および104がその内部に実装されるクライアントデバイスの内部で電子メッセージとして送信され得る。動的地図描画エンジン104は次に、基本地図データに対する要求112を送信し得るが、この要求は、通信ネットワークを介してサーバ106に送信される。要求112は、全地球測位サービス(GPS)座標を用いて、または他のなんらかの適切な仕方で領域R
1を指定し得る。更に、要求112は、基本図を描画するために地図データが要求されていることを指定するために、地図タイプ指示を含み得る。また更に、一部の実施形態では、要求102は、領域R
1のなんらかのベクトルベースの地図データが、コンポーネント102および104を実装するクライアントデバイスのところで既に利用可能であるかどうかを示す。
【0033】
要求112に応答して、サーバ106は、基本図画像を描画するための地図データをベクトルグラフィックス形式などの非ラスター形式で含む応答114を生成し得る。ある例示のシナリオによれば、応答114は以前に提供されたどのベクトルデータにも依存しない領域R
1の基本図画像のベクトルベースの記述を含む。言い換えれば、応答114は、領域R
1の基本図画像の完全な記述を含む。応答114は、1つまたはいくつかのタイル記述子T
1、T
2、・・・T
Nなどのなんらかの適切な方法で編成された地図データを含み得る。一般に、地図データは、1つのタイルを含む任意の数のタイルに対して提供され得る。各々のタイル毎に、応答112は、様々な特徴部F
1、F
2、などを記述し得るが、これらの各々は、適切なベクトルグラフィックス形式に従った1つまたはいくつかのベクトル記述子を用いて指定され得る(上記したように、特徴部は、1つの地図要素または地図要素のグループと関連付けられ得る)。特徴部は、建物などの単純な地図要素またはより複雑な地図要素集団に対応し得る。一部の実施形態では、応答114は、将来の識別に用いられる地図特徴部のための固有の識別子を提供し得る。一部の実施形態における応答114は、地図要素の様々な視覚属性を指定するスタイルデータを更に含む。
【0034】
動的地図描画エンジン104は、基本図画像を描画し、基本図画像をユーザインターフェース102に提供して対応するイベント116を生成し、受信した地図データ(および、利用可能であるときは、スタイルデータ)を将来の使用のためにメモリに記憶し得る。ある実施形態では、動的地図描画エンジン104は、地図データは基本図と関連付けられているとの指示を更に記憶する。
【0035】
図2のシナリオでは、ユーザは後に、地理座標を変更することなく地図タイプを基本図から路線図に変更することを判断して、ユーザインターフェース102を介して適切な制御装置を起動する。これに応答して、ユーザインターフェース102は、路線図データに対する要求120を生成して、要求120を動的地図描画エンジン104に発送し、このエンジンは次に、クライアントデバイスのところで違った地図画像が描画されようとしているとの指示121をサーバ106に提供する。ある実施形態では、指示121は、要求112に類似した路線図データに対する要求である。別の実施形態では、指示121は、路線図画像を描画するために、以前に提供された地図データを修正するための修正データを具体的に要求する。
【0036】
ある実施形態では、サーバ106は、修正指示を一連の電子メッセージ122
1、・・・122
Nとしてクライアントデバイスに提供する。しかしながら、別の実施形態ではこの修正指示は、1つのメッセージとして提供される。メッセージ122
1、・・・122
Nの各々は、対応するタイルT
1、・・・T
Nに対するベクトルデータをどのように修正するかの指示を含み得る。しかしながら、一部のシナリオでは、応答114に記述されたタイルT
1、・・・T
Nのうちの一部だけが修正される。例えば、ある水域を描写する地図タイルは、基本図の一部としてまたは路線図の一部として表示されるときに同じ外観を有し得る。
【0037】
修正される各々のタイルに対して、メッセージ122
iは、1つ以上の修正記述子M
1、M
2、・・・M
Mを提供し得る。一般的に、修正記述子は、以前に提供された地図データに追加されるべき地図要素のベクトル記述子を指定したり、以前に提供された地図データの中の除去されるべき地図要素を識別したり、以前に提供された地図データの中の地図要素のプロパティの新しい値を指定したりする。ある実施形態では、修正記述子M
1、M
2、・・・M
Mの各々が、追加、削除、修正、深さ修正などの実行されるべき動作を識別し、かつ追加される地図特徴部または地図要素に対するベクトル記述子、除去される地図特徴部または地図要素の識別子などの1つ以上の動作対象またはパラメータを含む。
【0038】
メッセージ122
1、・・・122
Nを受信すると、動的地図描画エンジン104は、要求された路線図画像のためのタイルを、応答114の中に提供されたベクトルデータの一部または全部と、メッセージ122
1、・・・122
Nの中に提供された修正指示と、を用いて描画する。より具体的には、動的地図描画エンジン104は、メッセージ122
1、・・・122
Nに従って修正された以前に提供されたベクトル記述子を解釈して、ラスター路線図画像を描画し、かつイベント126を生成して、この路線図画像を、ユーザインターフェース102を介して描画させ得る。動的地図描画エンジン104はまた、修正された地図データをメモリに記憶する。ある実施形態では、動的地図描画エンジン104は、最初に提供された地図データと修正されたデータとの双方を、バージョンの異なった地図データとして記憶する。
【0039】
図3に示す例示のメッセージ交換150の間、地図サーバ106は、追加の地図特徴部のベクトル記述子を、動的地図描画エンジン104に対してそれぞれのメッセージ152
1、・・・152
Nを介して提供する。これらの追加の地図特徴部は、以前に提供された地図データの一部または全部と共に使用されて、ユーザインターフェース102および動的地図描画エンジン104を実装するクライアントデバイスのところで新しい地図画像を描画する。ある実施形態では、メッセージ152
1、・・・152
Nは、ある地図タイルに対する追加を記述する。メッセージ152
1、・・・152
Nが、どの特定のタイルとも関連付けられない実施形態もある。
【0040】
メッセージ152
1、・・・152
Nの各々は、1つ以上の地図要素を有する地図特徴部の、ベクトルグラフィックス形式または他の適切な非ラスター形式での、記述を含み得る。メッセージ152はまた、対応する地図特徴部が、ほぼ同じ位置に配置された別の地図特徴部または要素に対してどのように描画されるかを指定する深さ指示を含み得る。例えば、メッセージ152
1、・・・152
Nのうちの1つを介して追加された新しい地図特徴部は、鉄道線路のあるセグメントであり得るし、以前に提供されたのは、道路のあるセグメントである地図特徴部であり得る。この新しい地図特徴部および以前に提供された地図特徴部のそれぞれの深さ指示次第で、鉄道線路のこのセグメントは、これらの鉄道線路と道路が交差する点における道路のセグメントの上または下に描画され得る。
【0041】
メッセージ152
1、・・・152
Nを受信すると、動的地図描画エンジン104は、新しい地図画像を描画し、かつイベント156を生成して、この新しい地図画像をユーザインターフェース102のところで表示させ得る。ある実施形態では、動的地図描画エンジン104はまた、増加した地図データを地図データの新しいバージョンとしてメモリに記憶する。
【0042】
図4を参照すると、サーバ106が、以前に提供された地図データに含まれるある地図特徴部が、新しい深さのところで新しい地図画像の中に描画されたと決定するときに、例示のメッセージ交換200が発生し得る。サーバ106は、固有の特徴部識別子によって識別された地図特徴部に対して、この地図特徴部が描画される新しい深さを示す修正指示202を生成して、動的地図描画エンジン104に送信する。別の実施形態では、修正指示202は、いくつかの地図特徴部または要素の新しい深さ値を示す。修正指示202を受信すると、動的地図描画エンジン104は、修正指示202を考慮して新しい地図画像を描画し、かつイベント204を生成して、この新しい地図画像を、ユーザインターフェース102のところで表示させ得る。
【0043】
更に、サーバ106が、以前に提供された地図データに含まれるある地図特徴部が、新しい地図画像の中に描画されていないと決定するときに、
図5の例示のメッセージ交換250が発生し得る。サーバ106は、例えば、固有の特徴部識別子を用いて地図特徴部を識別する修正指示252を生成して、動的地図描画エンジン104に送信する。別の実施形態では、修正指示252は、個々の地図要素をこの地図要素の適切な識別子を用いて識別する。更に、一部の実施形態では、修正指示252は、除去されるべきいくつかの地図特徴部または要素を識別する。修正指示252を受信すると、動的地図描画エンジン104は、修正指示252を考慮して新しい地図画像を描画し、かつイベント254を生成して、この新しい地図画像を、ユーザインターフェース102のところで表示させ得る。
【0044】
図6は、サーバ106が、いつくかのサブ特徴部または要素を有する複合した地図特徴部を修正するために修正データを動的地図描画エンジン104に提供している間での例示のメッセージ交換300を図示する。例えば、地図特徴部F
1は、サブ特徴部F
1-1、F
1ー2、F1ー
3、F1ー
4、およびF1ー
5を含み得る。地図特徴部F
1を基本図の一部として描画するときには、サブ特徴部F
1-1、F1ー
2、F1ー
3、F1ー
4、およびF
1-5の各々が用いられ得る。しかしながら、地図特徴部F
1を路線図の一部として描画するときには、地図特徴部F
1は、サブ特徴部F
1-1およびF1ー
2だけと共に描画され得る。ある実施形態では、サーバ106は、地図特徴部F
1が除去されるべきであることを示すメッセージ302を生成する。
図5を参照して検討した例示のシナリオに類似して、メッセージ302は、地図特徴部F
1の固有の識別子を含み得る。サーバ106は次に、それぞれサブ特徴部F1ー
1およびF1ー
5を追加するためにメッセージ304および306を生成する。
図3の例示のシナリオに類似して、メッセージ304および306は、対応する地図特徴部の記述をベクトルグラフィックス形式などの非ラスター形式で含み得る。メッセージ302、304、および306を受信すると、動的地図描画エンジン104は、地図特徴部F
1の新しいバージョンを持つ新しい地図画像を描画し、かつイベント310を生成して、この新しい地図画像を、ユーザインターフェース102のところで表示させる。
【0045】
次に、
図1のシステムまたは類似の環境で動作するコンピューティングデバイスに実装され得るいくつかの例示の方法を、
図7〜9を参照して検討する。これらの方法は、なんらかの適切なプログラミング言語で開発されたコンピュータプログラムとして実装されて、(1つまたはいくつかのハードディスクドライブなどの)有形の非一時的なコンピュータ読み取り可能媒体に記憶され、かつ1つまたはいくつかのプロセッサで実行可能であり得る。例えば、
図7および8の方法は、地図サーバ12に実行され、
図9の方法は、クライアントデバイス14に実装され得る。
図7〜9の方法はサーバまたはパソコン(PC)などの個々のコンピュータで実行可能であるとはいえ、これらの方法の少なくとも一部を例えば、クラウドコンピューティング環境でいくつかのコンピュータを用いて分散式に実装することも可能である。
【0046】
図7を参照すると、いくつかの地図画像のための地図データを生成するための例示の方法350が、例えば、地図サーバ12の地図コントローラ30またはサーバ106の類似のコンポーネントに実装され得る。ある実施形態によれば、ある領域の第1の地図画像を描画するためのベクトル記述子がブロック352で生成される。これらのベクトル記述子は、ベクトルグラフィックス形式に適合し、かつそれぞれの地図要素を記述し得る。一部の実施形態では、ベクトル記述子は、各々が1つ以上の地図要素を含む地図特徴部に従ってグループ化され得る。更に、一部の実施形態では、ベクトル記述子は、ベクトルデータ、テキストベースのラベルデータ、アイコン、または、道路シールドなどの記号を効率的に描画するまたは再描画するためのスタイルデータをこれまた含む非ラスター地図データの一部として提供され得る。
【0047】
次に、ブロック354で、ベクトル記述子は、クライアントデバイスに提供される。例えば、ベクトル記述子は、1つまたはいくつかの電子メッセージとして、例えば、
図1のネットワーク16などの通信ネットワークを介して送信され得る。
【0048】
ブロック356で、同じ領域の第2の地図画像を描画するためのデータに対する要求が受信される。一部のシナリオでは、この要求は、
図2の相互作用図に図示するように、クライアントデバイスのところでユーザが異なった地図タイプを選択することに応答して送信される。以前に提出されたベクトル記述子に対する1つまたはいくつかの修正の記述を含む修正指示が、ブロック358で生成されて、ブロック360でクライアントデバイスに提供される。
【0049】
別のシナリオでは、ブロック356で受信された要求は、同じ領域および同じ地図タイプに対応する地図画像が描画される新しいズームレベルをユーザが選択することに応答して送信される。例えば、ブロック352で生成されたベクトル記述子は、地理的領域Rの基本図タイプのズームレベルZ
1にあるいくつかのタイルを記述し得る。ブロック356でユーザがズームレベルZ
2を選択し、データに対する適切な要求が発行された後で、それぞれブロック358および360で、修正指示が生成されて、クライアントデバイスに提供され得る。クライアントデバイスは、以前に提供されたベクトル記述子に対して、この修正指示に従って追加、除去、または修正し、かつこれらのベクトル記述子の一部または全部を再スケーリングして、対応する地図要素をズームレベルZ
2で描画し得る。より具体的な例として、ブロック354で提供されたベクトル記述子は、ズームレベルZ
1での公園のベクトルベースの記述を含み、また、この公園の同じベクトルベースの記述を用いて、ズームレベルZ
2での公園を修正された地図画像の一部として再描画し得る。
【0050】
図8を参照すると、以前に提供された地図データの修正の記述を生成するための例示の方法400は、例えば、地図サーバ12の地図コントローラ30またはサーバ106の類似のコンポーネントに実装され得る。ある実施形態では、方法400のステップの一部は、上述した方法350のブロック356〜360で実行される。
【0051】
ブロック402で、地図画像がクライアントデバイスのところで更新されるとの指示が受信される。ブロック404で、以前に提供されたベクトル記述子に対する追加が識別され、対応する記述が生成される。ブロック406で、以前に提供されたベクトル記述子の一部の削除が識別され、対応する修正の記述が生成される。上述したように、一部のシナリオでのある地図特徴部の修正は、サブ特徴部の一部の削除および追加として表される。ベクトルデータに対する修正の記述などの修正指示は、1つの電子メッセージまたはいくつかの電子メッセージでクライアントデバイス408に送信される。
【0052】
図9は、例えば、動的地図描画エンジン62または104に実装され得る地図画像を描画するための例示の方法450のフロー図である。ブロック452で、あるエリアまたは領域のベクトル記述子が受信され、ブロック454で、第1の地図画像が、受信されたベクトル記述子を用いて描画される。この目的のため、受信されたベクトルデータが解釈されて、ラスター画像を生成する。
【0053】
次に、ブロック456で、第2の地図画像を描画するための要求が、例えば、ブラウザアプリケーションのインターフェースなどのユーザインターフェースから受信される。この第2の地図画像は、上述したように、同じ領域に対するものであるが、違った地図タイプやズームレベルに対応したものであり得る。ブロック452で受信されたベクトル記述子に対する1つ以上の修正の記述などの修正指示が、ブロック458で受信される。この第2の地図画像は次に、ブロック452で受信されたベクトル記述子の一部または全部と、ブロック458で受信された修正の記述とを用いて描画される。上記したように、一般にベクトルデータに対する修正は、深さの追加、削除、修正、変更などを含み得る。
【0054】
上記した技法の例示の応用を更に解説するために、同じ地理的領域に対応する
図10Aおよび
図10Bの地図を、それぞれ基本図タイプおよび路線図タイプに従って表示する。
図10Aに示す基本図の地図画像500は、道路および公園などの複数の地図要素の描画500を含み得る。
図10Bに図示するように、路線図の地図画像は、地図画像500の地図要素と、地図画像500の対応する部分に重ね合わされた地下鉄路線504とを含み得る。実施形態次第で、地下鉄路線504は、1つの地図特徴部または、各々が路線のそれぞれのセクションに対応するいくつかの画像特徴部として定義され得る。更に、地下鉄記号506は、地図画像500のある部分の上に描画され得る。実施形態次第で、地下鉄記号506は、例えば、追加された地図特徴部もしくは要素として、ラベルとして、またはアイコンとして提供され得る。ある実施形態では、地下鉄記号506は、ラスター形式の標準の地下鉄記号を標準のアイコンを生成するサーバから取ってくるために用いられることが可能な統一資源位置指定子(URL)として指定される。
【0055】
図10Bの地図画像を
図10Aの地図画像がクライアントデバイスのところで描画された後でこのクライアントデバイスのところで生成するために、地図サーバは、地下鉄路線504に対応する1つ以上の地図特徴部をベクトル形式で記述する修正指示だけを提供し得る。ある実施形態では、この修正指示はまた、深さ指示を提供して、地下鉄路線504を、
図10Aの地図画像に示す道路の上に表示させる。更に、ある実施形態では、修正指示は、地下鉄記号506の記述をラベルまたはアイコンとして更に含む。
【0056】
次の更なる考慮は、前述の検討に当てはまる。本明細書全体にわたって、複数の例は、1つの例として説明されたコンポーネント、動作、または構造を実現し得る。1つ以上の方法の個々の動作は、個別の動作として図示され、説明されているが、これら個別の動作のうちの1つ以上は、同時に実行され得るし、これらの動作が図示される順序で実行されることを要求するものはなにもない。例示の構成で個別のコンポーネントとして提示される構造および機能性は、組み合わされた構造またはコンポーネントとして実現され得る。同様に、1つのコンポーネントとして提示される構造および機能性は、個別のコンポーネントとして実現され得る。これらおよび他の変更、修正、追加、および改良は、本明細書の主題の範囲に入る。
【0057】
ある実施形態は、本明細書では、ロジックまたは複数のコンポーネント、モジュール、またはメカニズムを含むものとして説明されている。モジュールは、ソフトウエアモジュール(例えば、機械読み取り可能媒体上でまたは送信信号中で実現される符号)またはハードウエアモジュールを構成する。ハードウエアモジュールは、ある動作を実行することが可能な有形のユニットであり、かつある方法で構成または配置され得る。例示の実施形態では、1つ以上のコンピュータシステム(例えば、独立型、クライアント、またはサーバコンピュータシステム)または、コンピュータシステム(例えば、プロセッサまたはプロセッサのグループ)の1つ以上のハードウエアモジュールは、本明細書に説明するある動作を実行するために動作するハードウエアモジュールとして、ソフトウエア(例えば、アプリケーションまたはアプリケーション部分)によって構成され得る。
【0058】
別様の記載がない限り、「処理」、「計算」、「算出」、「決定」、「提示」、「表示」または類似物などの単語を用いた本明細書中の検討は、1つ以上のメモリ(例えば、揮発性メモリ、不揮発性メモリ、またはこれらの組み合わせ)、レジスタ、または、情報を受信する、記憶する、送信する、または表示する他の機械コンポーネントの内部で物理的(例えば、電子的、磁気的、または光学的)な量として表されるデータを操作または変換する機械(例えば、コンピュータ)の動作またはプロセスに言及し得る。
【0059】
本明細書で用いられる、「一実施形態(one embodiment)」または「実施形態(an embodiment)」に対するいかなる言及も、その実施形態に関連して説明される特定の部品、特徴部、構造、または特徴が少なくとも1つの実施形態に含まれることを意味する。明細書中での様々な箇所における「一実施形態において」という語句の出現は、必ずしも全てが、同じ実施形態に対する言及であるとは限らない。
【0060】
一部の実施形態は、「連結された」および「接続された」という表現をこれらの派生語と共に用いて説明され得る。例えば、一部の実施形態は、2つ以上の部品が直接的な物理的または電気的に接触していることを示すために「連結された」という用語を用いて説明され得る。しかしながら、「連結された」という用語はまた、2つ以上の部品が互いに直接的には接触していないが、それでも、互いに協動または相互作用することを意味し得る。実施形態は、この文脈には限られない。
【0061】
本明細書で用いられる、「含む(comprises)」、「含む(comprising)」、「含む(includes)」、「含む(including)」、「有する(has)」、「有する(having)」という用語またはこれらの他のなんらかの変化語は、非排他的な包含を範囲に含むことを意図される。例えば、部品のリストを備えるプロセス、方法、品物、または装置は、必ずしもこれらの部品に限られることはなく、明示的にはリストされていないまたはこのようなプロセス、方法、品物、または装置に固有の他の部品を含み得る。更に、明示的に反対に記載されていない限り、「または」は、包括的な「または」であり、排他的な「または」ではない。例えば、条件AまたはBは、次のうちのどれかによって満足される:Aは真(または存在する)でBは偽(または存在しない)である、Aは偽(または存在しない)でBは真(または存在する)である、ならびにAおよびBは双方とも真(存在する)である。
【0062】
加えて、「a」または「an」の使用を用いて、本明細書中の実施形態の部品およびコンポーネントを説明する。これは単に便利性のためおよび、本発明の一般的な意味を与えるためになされたものである。この説明は、1つまたは少なくとも1つを含むものと読まれるべきであり、明瞭に別様であることが意味されない限り、単数形は複数形も含む。
【0063】
本開示を読めば、当業者は、本明細書中の開示された原理によって地図データを生成するためのシステムおよびプロセスのための更に他の代替の構造および機能的設計を理解されるであろう。したがって、特定の実施形態および応用例を図示し、説明したが、開示された実施形態は、本明細書に開示する正確な構造およびコンポーネントに限られないことを理解すべきである。当業者には明らかであろう様々な修正、変更および変形は、添付の特許請求の範囲に定義された精神および範囲から逸脱することなく、明細書に開示された本方法および装置の構成、動作および詳細に対してなされ得る。