(58)【調査した分野】(Int.Cl.,DB名)
前記第1の詳細レベルを有する前記ナビゲーション指示を取り出すステップが、前記ナビゲーション指示によって定義される経路に対応するポリラインを取得するステップを含み、
前記第2の詳細レベルを有する前記ナビゲーション指示を取り出すステップが、(i)進路変更ごとの命令、(ii)リアルタイム交通データ、(iii)前記経路に沿った1つまたは複数の地点についてのストリートレベルの画像、(iv)前記経路に沿った1つまたは複数の位置についてのプレースページ情報のうちの少なくとも1つとともに前記ポリラインを取得するステップを含み、低い詳細のナビゲーション指示を取り出すステップが、データ(i)〜(iv)のいずれも受信しないステップを含み、前記プレースページ情報が、地理的に配置された会社、営業時間、ユーザフィードバック情報、および製品および価格情報の1つまたは複数の記述を含む、
請求項1から6のいずれか一項に記載のコンピュータ実装方法。
前記ナビゲーション指示を自動的に取り出すステップが、前記ユーザインターフェースを動作させるユーザと前記対話型デジタルマップとの間の事前の対話に基づいて、輸送モードを自動的に選択するステップを含み、前記輸送モードが、車を運転すること、徒歩、自転車に乗ること、飛行機に乗ること、または公共交通機関の少なくとも一つである、請求項1から11のいずれか一項に記載のコンピュータ実装方法。
【発明を実施するための形態】
【0011】
概要
本開示の地理的アプリケーションは、待ち時間をほとんど生じさせない効率的で正確な技法を使用して、明白なユーザ入力以外の信号に基づいて目的地を自動的に決定することによって、目的地を特定するために必要なユーザ動作の数を有利に低減する。これらの技法は、地理的アプリケーションがそれを介して対話型デジタルマップを表示することができるユーザインターフェースを有するコンピューティングデバイスに実装することができる。地理的アプリケーションは、デジタルマップの現在可視の部分によって表される地理的エリア内の位置を自動的に決定し、この位置までのナビゲーション指示を取得し(リモートサーバから、またはキャッシュされたデータを使用して)、ユーザが位置を明示的に指定することなく、ユーザインターフェースを介してこれらのナビゲーション指示の視覚化を提供する。いくつかの実装形態では、地理的アプリケーションは、コンピューティングデバイスの現在の配置からこの位置までのナビゲーション指示を取得するので、ユーザは起点を明示的に指定する必要もない。様々な実装形態またはシナリオにおいて自動的に決定された目的地の位置は、ビューポートの幾何学的中心、(たとえば、地下鉄の駅、バス停留所など)ユーザが選択する可能性が高い輸送モードを考慮して選択されたビューポートの幾何学的中心またはその近くの関心のある地点、ユーザの選好または関心(たとえば、コーヒーショップ)を考慮して選択されたビューポートの幾何学的中心またはその近くの関心のある地点などに対応することができる。地理的アプリケーションは、コンピューティングデバイスの現在の位置、ユーザの自宅または職場の住所、またはユーザ固有の位置をナビゲーション指示の起点として選択することができる。
【0012】
ネットワーク帯域幅を効率的に利用するために、地理的アプリケーションは、新しい目的地を決定し、いくつかの実装形態では、しきい距離または移動時間を超えてビューポートが移動した場合にのみ新しいナビゲーション指示を要求し得る。たとえば、ユーザがビューポートをゆっくりとパンすると、地理的アプリケーションは、ビューポートの中心がビューポートの前の配置の中心に対して距離d
minを超えて移動したと判断した後に、指示についての新しい要求を送り得る。距離d
minおよび地理的アプリケーションが様々なシナリオで算出する他の距離は、地面(すなわち、デジタルマップ上に表される実際の地理)またはスクリーンに対して測定することができる。距離d
minは、ソフトウェアアプリケーションがデジタルマップを現在表示しているズームレベルに固有とすることができる。ナビゲーション指示がビューポートから完全に消える状況を回避するために、ナビゲーション指示が取り出された2つの位置の間でビューポートが移動したとき、少なくとも1つのそのような位置がビューポート内にあるように、距離d
minはビューポートのサイズにも依存し得る。いくつかの実装形態における地理的アプリケーションは、現在観察されている待ち時間を考慮して、距離d
min(またはナビゲーション指示を自動的に要求する頻度を定義する何らかの他のしきい値)を自動的に調整する。このようにして、地理的アプリケーションは、ナビゲーション指示の要求の数を低減し、それによって、帯域幅使用率および処理時間を低減する。
【0013】
さらに、地理的アプリケーションは、ビューポートが移動している速度に応じて異なる詳細レベルでナビゲーション指示を要求することができる。たとえば、サーバは、いくつかの場合には、「軽量」のナビゲーション指示(たとえば、経路を表すポリライン)を提供し、他の場合には、より詳細な指示(たとえば、進路変更ごとの指示、車線情報、リアルタイム交通データ、ストリートレベルのパノラマ画像、相乗り情報)を提供することができる。サーバは、たとえば、1つまたは複数のしきい値に対して測定されたとき、ビューポートが比較的速く移動しているとき、軽量の指示(データ送信をあまり必要としない)、および、ビューポートが静止している、または比較的ゆっくり移動しているとき、詳細な指示を提供することができる。
【0014】
別の例として、ソフトウェアアプリケーションは、軌道上の中間点について第1の詳細レベルを有するナビゲーション指示を要求し、軌道の終点におけるまたはその近くのある地点について第2の詳細レベルを有するナビゲーション指示を要求することができ、第1の詳細レベルは、第2の詳細レベルよりも少ない情報を含む。例示的な実装形態では、地理的アプリケーションは、フリングジェスチャによりユーザがビューポートに通信した方向および運動量を分析し、(ジェスチャが介在しないことを想定することによって)ビューポートの軌道を決定し、軌道に沿った1つまたは複数の中間位置、または中間地点とともに、軌道の終点を決定する。地理的アプリケーションは、予想される軌道を計算すると、およびビューポートがこれらの位置に到達する前に、終点および中間地点までのナビゲーション指示を要求し、したがって、これらのナビゲーション指示の提示は、ユーザインターフェース上ではシームレスに見える。さらに、地理的アプリケーションは、軌道の終点までの詳細な指示、および軌道上の中間地点までの軽量の指示を要求することができる。
【0015】
実装形態に応じて、地理的アプリケーションは、軌道に沿って均一に広がった、または必ずしも軌道に沿って均一に広がっていないランドマークに対応する中間地点を選択することができる。たとえば、地理的アプリケーションは、ユーザのレビュー、ユーザ固有の選好、履歴データなど、および/またはPOI(関心のある地点)の視覚的顕著性を考慮して軌道に沿ったPOIの重みを決定し、重みを考慮して、および他の中間地点までの距離を考慮して、中間地点を選択することができる。
【0016】
地理的アプリケーションは、起点から新しい目的地までの距離、ユーザが使用した最後の輸送モード、ユーザの選好、交通量、予想されるコスト、輸送機関のタイプ別のアクセスしやすさ、時刻など、信号の任意の適切な組合せに基づいて、輸送モードを決定することができる。たとえば、地理的アプリケーションは、最初の配置のビューポートの中心までの歩行指示を自動的に要求し、ユーザがビューポイントをNマイルより多く移動させた後、その新しい配置のビューポートの中心までの運転指示を要求することができる。
【0017】
さらに、地理的アプリケーションは、旅行の異なる行程が異なる輸送モードに対応するマルチモードナビゲーション指示を生成することができる。たとえば、地理的アプリケーションは、駐車場までの運転指示、それに続いて駐車場から徒歩で到達可能である目的地までの歩行指示を含むナビゲーション指示を取り出すことができる。
【0018】
少なくとも上記の例から明らかなように、本開示のシステムおよび方法は、ナビゲーション命令のために目的地を手動で指定する必要性をなくし、さらに、様々なシナリオでナビゲーション命令を取り出すときの帯域幅使用率、待ち時間、およびメモリ要件を低減することによって、既存の技法を上回る利点を提供する。
【0019】
例示的なユーザデバイスおよび通信システム
これらの技法を実施することができる例示的なシステム10が
図1に示される。このシステムは、たとえば、スマートフォン、タブレットコンピュータ、スマートウォッチなどのポータブルデバイス、またはデスクトップコンピュータなどの非ポータブルデバイス、またはナビゲータなど専用コンピューティングデバイスとすることができるユーザデバイス12を含む。ユーザデバイス12は、1つまたは複数の中央処理装置(CPU)および/またはいくつかのグラフィックス処理ユニット(GPU)など1つまたは複数のプロセッサ14と、永続的(たとえばフラッシュディスク)および非永続的(たとえば、ランダムアクセスメモリ(RAM))構成要素を含み得るコンピュータ可読メモリ20と、入力デバイスとともに、たとえば、タッチスクリーンまたは表示装置を含み得るユーザインターフェース22と、ワイヤードおよび/またはワイヤレス通信リンクを介してデータを送受信するためのネットワークインターフェース24と、全地球測位サービス(GPS)モジュールなどの測位ユニット、加速度計、ジャイロスコープなどを含み得る1つまたは複数のセンサ26とを含むことができる。
【0020】
メモリ20は、オペレーティングシステム40および地理的アプリケーション42などの様々なソフトウェアアプリケーションを実装する、1つまたは複数のプロセッサ14上で実行可能な命令を記憶することができる。地理的アプリケーション42は、対話型デジタルマップ、ナビゲーション指示、地理的クエリの結果などのような地理的コンテンツの生成専用の専用ソフトウェアアプリケーションとすることができ、または、別の実施形態では、地理的コンテンツを生成するためのスクリプトおよび/またはアプリケーションプログラミングインターフェース(API)機能を実行する汎用ブラウザアプリケーションとすることができる。地理的アプリケーション42は、キャッシュされたマップデータ46など、メモリ20内にローカルに記憶されたマップデータ上で動作することができ、またはオンライン地理的サービスから地理的コンテンツを受信することができる。地理的アプリケーション42は、以下により詳細に説明するように、ユーザ入力に応答して、ならびに自動的にナビゲーション指示を取り出すように構成されたナビゲーション指示モジュール44を含むことができる。
【0021】
引き続き
図1を参照すると、通信ネットワーク50は、インターネット、またはワイヤードおよび/もしくはワイヤレス通信リンクを含む任意の他の適切なネットワークとすることができる。ユーザデバイス12は、一般に、任意の数のサーバおよびデータベースと通信して、マップデータ、ナビゲーション指示、地理的クエリに対する応答など、様々な地理的コンテンツを受信することができる。簡単のために、
図1は、マップデータベース62、プレースページデータベース64、およびリアルタイム交通データベース66に結合されたマップデータ/ナビゲーションサーバシステム60(簡単のために、「サーバ60」)のみを示している。
【0022】
マップデータベース62は、様々な自然地理的特徴(たとえば、川、山、森林)、ならびに人工的な地理的特徴(たとえば、道路、建物、公園)などを表すマップデータを記憶することができる。マップデータは、たとえば、相互接続された頂点および/またはビットマップ画像のセットとして、ベクトルグラフィックスフォーマットのマップの特徴の記述を含むことができる。サーバ60は、ある地理的領域のマップ画像を生成するためのマップデータを提供し、ベクトルベースのフォーマットおよびラスタフォーマットを含む任意の適切なフォーマットで、マップデータをクライアントデバイス12に提供することができる。プレースページデータベース64は、地理的に配置された会社、営業時間、ユーザフィードバック情報、製品および価格情報などの記述を含むことができる。リアルタイム交通データベース66は、たとえば、衛星画像を使用して収集された様々な道路セグメントまたはドライバーからの更新に関する交通情報、道路および車線閉鎖情報、ならびに事故情報などを記憶することができる。リアルタイム交通データベース66は、いくつかの実装形態では、遅延やキャンセル、いくつかの公共交通機関のルートがどの程度混雑しているかの表示、予想される到着時刻などの公共交通機関に関する様々な情報も記憶する。
【0023】
サーバ60は、ナビゲーション指示エンジン68を実装する命令を記憶する1つまたは複数のプロセッサおよびコンピュータ可読メモリを含むことができる。例示的なシナリオでは、ナビゲーション指示エンジン68は、クライアントデバイス12からナビゲーション指示の要求を受信し、指定されたまたは自動的に決定された輸送モードについて指定された開始点(source)と目的地との間のルートを生成し、そのルートのナビゲーション指示を生成する。ナビゲーション指示エンジン68、およびユーザデバイス12において動作するナビゲーション指示モジュール44の例示的な動作を以下で説明する。
【0024】
ナビゲーション指示の取出しおよび表示
図2は、ナビゲーション指示モジュール44が表示することができる例示的な対話型デジタルマップ100を示しており、ビューポート102は、ユーザに現在可視である部分を画定している。
【0025】
例示的な実装形態では、ユーザデバイス12のユーザインターフェース22はスクリーンを含み、ビューポート102はスクリーンのアクティブな部分に対応する。ナビゲーション指示モジュール44は、ユーザインターフェース22を介して受信されたユーザコマンドに応答してビューポート102を再配置し、デジタルマップ100の適切な部分をビューポート102内に表示する。したがって、デジタルマップ100の異なる部分は、ビューポート102の異なる配置ごとに、ビューポート102内で可視である。ユーザコマンドは、タイピングされた入力、ジェスチャ、音声コマンドなどを含むことができる。ジェスチャは、ユーザの指または複数の指とタッチスクリーンとの間の接触を含むことができ、たとえば、タップ、ダブルタップ、ドラッグ、フリング(またはフリック)などを含むことができる。また、ジェスチャは、クライアントデバイス12が様々なセンサを使用して検出することができる3次元ハンドジェスチャを含むことができると企図される。
【0026】
図2に示すように、ナビゲーション指示モジュール44は、デジタルマップ100上にグラフィックオーバーレイ106としてナビゲーション指示を提供する。この例示的なシナリオにおけるナビゲーション指示モジュール44は、その現在の配置のビューポート102によってカバーされるデジタルマップ100の領域の幾何学的中心を決定し、ある地点であり得る最も近いルーティング可能なセグメントを識別し、識別された最も近いルーティング可能なセグメントを、ナビゲーション指示についての目的地104として選択する。ナビゲーション指示の起点108に関して、ナビゲーション指示モジュール44は、この目的のために、ユーザデバイス12の現在の位置、明示的に指定された位置、ユーザの自宅または職場の住所、主要なアクセス道路に対応するビューポートの端上の位置、または任意の他の適切な位置を選択することができる。ナビゲーション指示モジュール44は、サーバ60に対するクエリを行う、またはキャッシュされたマップデータ46を使用することによって、起点108から目的地104までのナビゲーション指示を生成する。以下により詳細に説明するように、ナビゲーション指示モジュール44は、様々な詳細レベルでナビゲーション指示を要求することができる。
【0027】
この例におけるグラフィックオーバーレイ106は、一連の強調表示された道路セグメントである。
図2はまた、起点108とビューポート102の端との間の経路110を示す。しかしながら、
図2に示すように、ビューポート102が配置されているときは、経路110は可視ではなく、明瞭化のために経路110が示されていることは理解されよう。
【0028】
次に
図3を参照すると、ユーザは、たとえば、あるフィギュアジェスチャ(figure gesture)を使用してビューポート102をドラッグすることによって、デジタルマップに対してビューポート102を再配置することができる。ナビゲーション指示モジュール44は、その新しい配置のビューポート102によってカバーされるデジタルマップの領域の幾何学的中心を自動的に決定し、その新しい最も近いルーティング可能なセグメントを識別し、識別された最も近いルーティング可能なセグメントを、ナビゲーション指示についての新しい目的地114として選択する。次いで、ナビゲーション指示44は、目的地114までのナビゲーション指示を要求する。ナビゲーション指示モジュール44は、ナビゲーション指示を要求するユーザからの明示的なコマンドを受信することなく、これを行う。
図2と同様に、明快のために、
図3は、起点108とビューポート102の端との間の経路120を示す。
【0029】
例示的な一実装形態によれば、ナビゲーション指示モジュール44は、ビューポート102内の新しい目的地を示し、ビューポート102が最小距離d
minだけ移動したと判定した後にのみ新しいナビゲーション指示を取得する。たとえば、ナビゲーション指示モジュール44は、目的地114と目的地104との間の距離がd
minよりも大きいかどうかを判定し、距離がd
minを超えると判定したことに応答してのみ新しいナビゲーション指示を取得することができ、そうでなく、距離がd
minを超えない場合、ナビゲーション指示モジュール44は、帯域幅および処理リソースを保持するために、新しいナビゲーション指示を取得しない。様々な実装形態では、デジタルマップ上のポイント間の距離は、スクリーンピクセルなどに関して、利用可能な道路に沿って、直線距離として測定することができる。
【0030】
d
minの値は、ズームレベルに依存し得る。たとえば、ビューポート102がおよそ長さ2マイル、幅2マイルの地理的エリアを示すとき、d
minは、0.1、0.2、0.5マイルなどとすることができ、ビューポート102がおよそ長さ20マイル、幅20マイルの地理的エリアを示すとき、d
minは、1、2、5マイルなどとすることができる。一般に、d
minは、いくつかの実装形態では、ユーザによって供給される値を含む、任意の適切な値になるように構成することができる。ユーザは、例示的なシナリオでは、ビューポート102をある方向にパンし、ナビゲーション指示モジュール44は、約d
minだけ離れたナビゲーション指示モジュール44の中心近くの位置までのナビゲーション指示を取り出し、それによって、ネットワークトラフィックの量、および/またはメモリ読取り動作の数を低減する。
【0031】
追加または代替として、ナビゲーション指示モジュール44は、ネットワーク帯域幅および/またはローカル処理リソースを保持するために、新しい目的地を決定し、ある最小時間間隔t
min(たとえば、10、20、100ミリ秒)後に新しいナビゲーション指示を取得する。たとえば、
図3に示すようにビューポート102が再配置された後、ナビゲーション指示モジュール44は、ナビゲーション指示の取出しをt
minだけ遅らせることができる。
【0032】
さらに、ビューポート102が
図2の初期配置から
図3の目標配置に移動すると、ナビゲーション指示モジュール44は、ビューポート102がマップにわたって移動している速度を決定することができる。例示的な一実装形態における速度は、デジタルマップが閲覧されているズームレベルにかかわらず、毎秒または別の時間単位ごとにスクリーンピクセルを単位として測定される。別の例示的な実装形態では、速度は、デジタルマップによって表される地理的エリアが毎秒移動されるマイルまたはキロメートルを単位として測定される。この場合の速度は、デジタルマップのズームレベルに依存する。また別の実装形態では、速度は、起点と目的地との間のナビゲーションルートに沿って「移動した」マイルまたはキロメートルを単位として測定され、ビューポート102が移動しているときに、連続的または定期的に再計算される。より一般的には、ビューポート12の速度は、任意の適切な方法で測定することができる。
【0033】
ナビゲーション指示モジュール44は、ビューポート12の測定された速度を使用して、新しい目的地を再計算すべき頻度、新しいナビゲーション指示を取得すべき頻度、ナビゲーション指示をどの詳細レベルで取り出すべきかなどを決定することができる。ナビゲーション指示モジュール44は、速度があるしきい値速度v
minを超えると判定すると、低い詳細レベルでナビゲーション指示を取得することができる。逆に、ナビゲーション指示モジュール44は、速度がしきい値速度v
minを超えないと判定すると、高い詳細レベルでナビゲーション指示を取得することができる。
【0034】
様々な実装形態では、ナビゲーション指示モジュール44は、距離しきい値d
min、時間しきい値t
min、または速度しきい値v
minのうちの1つまたは複数を使用して、新しいナビゲーション指示を取得すべきかどうかを決定し、もしそうであれば、どの詳細レベルが適切であるかを決定する。ナビゲーション指示がどのように取得されるべきかを決定するために複数の要因を使用する一例として、ナビゲーション指示モジュール44は、ビューポート102が少なくともd
minだけ移動されること、またはビューポート102がd
minの間新しい位置にとどまることを要求し、これらの2つの条件のうちの1つが満たされている場合のみ、新しいナビゲーション指示を取得することができる。
【0035】
ナビゲーション指示モジュール44がナビゲーション指示を取得することができる詳細レベルは、2、3、または任意の適切な数のモードに対応することができる。より詳細には、いくつかの実施形態におけるナビゲーション指示モジュール44は、ナビゲーション指示について、低、高の2つの詳細レベルのうちの1つを要求し、他の実施形態では、3つ以上の詳細レベル(たとえば、低、中、高)のうちの1つを要求することができる。例示的な実装形態では、低い詳細レベルは、デジタルマップにオーバーレイとして適用するために、経路を記述するポリラインを含む軽量のナビゲーション指示に対応する。高い詳細レベルは、進路変更ごとの命令(たとえば、「5マイルの間ルート12にとどまる」、「エルム通りに左折」、「出口174を出る」)、車線情報(たとえば、あるルートセグメント上のHOV車線、別のルートセグメントの3車線、ある交差点の左折専用車線)、リアルタイム交通情報(交通量、事故および車線閉鎖情報など)、ルートに沿ったおよび/または目的地における関心のある地点(POI)に関する情報、ルート沿いの中間地点のランドマークなど対象物の写真、および選択的なストリートレベルの画像を含む詳細なナビゲーション指示に対応する。
【0036】
目的地への移動のための適切な輸送モードを選択するために、ナビゲーション指示モジュール44は、そのようなユーザ固有の信号を明示的および/または暗示的な選好、最近使用された輸送モードなど、ならびに開始点108と目的地104/114との間の距離、および目的地に関係する他の信号として考慮することができる。例示的なシナリオでは、ナビゲーション指示モジュール44は、開始点と目的地との間の距離がある距離d
1未満であるとき、歩行指示を自動的に取得し、開始点108と目的地104との間の距離が距離d
1よりも大きく、ある距離d
2未満であるとき、運転指示などを自動的に取得する。いくつかの実装形態では、軽量のナビゲーション指示は、単一の輸送モードのもののみを含み、詳細な指示は、1つまたは複数の代替の輸送モードによるナビゲーション指示を含み、したがって、ユーザがデジタルマップと対話しているときに輸送モード間を切り替えた場合、遷移はシームレスに見える。
図5を参照しながら以下で説明するように、自動的に取得されるナビゲーション指示もマルチモードとすることができる。
【0037】
上記で説明した例では、ナビゲーション指示モジュール44は、目的地を識別し、ネットワークサーバへの要求を生成するためのタイミング(またはキャッシュされたマップデータを含むローカル要求)、またはナビゲーション指示についての要求の詳細レベルなど、ナビゲーション指示を取得するための様々なパラメータを決定することができる。代わりに、これらの決定の一部は、少なくとも、ナビゲーション指示についての要求がサーバ60に関係するものである場合、サーバ60において実装することができる。たとえば、ナビゲーション指示モジュール44は、ビューポートが特定の時間に移動している方向および速度を指定することができ、サーバ60は、ナビゲーション指示のための適切なパラメータを自動的に決定することができる。一般に、ナビゲーション指示を自動的に取り出す機能は、任意の適切な方法で、ナビゲーション指示モジュール44とサーバ60のナビゲーション指示エンジン68との間で分散させることができる。
【0038】
次に
図4を参照すると、たとえば、ユーザがスクリーンとの接触を中断した後にビューポート102がその現在配置202Aから最終配置202Dに向かうと予想される軌道200に沿って移動を続けるように、ユーザは、フリングジェスチャでビューポート102に動きを通信することができる。たとえば、地理的アプリケーション42は、デジタルマップが表示されているタッチスクリーンとの接触を検出し、ユーザがビューポート102をフリンジした方向、ならびにジェスチャの加速度を測定することができる。これらの測定値を使用して、地理的アプリケーション42は、初期の現在配置と目標配置との間のビューポート102の予想される軌道を決定することができる。たとえば、ビューポート102がその目標配置に到達する前にユーザが新しいジェスチャを適用し、それによって以前のユーザコマンドをオーバーライドする場合、ビューポート102は、最終的には予想される軌道に従わない場合がある。いずれの場合にも、予想される軌道を計算すると、およびビューポートを配置202A〜Dに前進させる前に、地理的アプリケーション42は、これらの配置に関連付けられた中間地点までのナビゲーション指示を自動的に取得することができる。
【0039】
図4は、その最終配置202Dおよびいくつかの中間配置202A〜202Cにおけるビューポート102を示す。一実装形態では、中間配置202A〜Cは、ある固定の離間距離dで軌道200に沿って離間される。上述の例と同様に、距離dは、ビューポート102において可視であるデジタルマップのズームレベルに固有のものとすることができる。距離dは、実装形態に応じて、輸送モードを考慮して、直線距離として、または道路に沿って測定され得る。ナビゲーション指示モジュール44は、一般に、任意の適切な方法で計算された距離、ビューポートの対応する中心間の移動時間、またはフリングジェスチャに関連付けられた固定数の中間配置(ビューポートに通信された加速度またはデジタルマップのズームレベルにかかわらず、ナビゲーション指示モジュール44が、フリングジェスチャごとにビューポートのN個の中間配置を計算する場合)を考慮して、ビューポート102が配置202A〜Cに中心を置く地点間の間隔を決定することができる。
【0040】
さらに、ナビゲーション指示モジュール44は、ビューポート102が下にあるデジタルマップに対して移動する速度を考慮して、ビューポート102の中間配置を選択することができる。速度は一般に、フリングジェスチャに応答して変化し、ビューポートは最初に加速し、最大速度に達し、軌道の終点に達すると減速して停止する。したがって、ビューポートがマップに表された地理に対して10km/秒の速度で移動しているとき、ナビゲーション指示モジュール44は、中心が1km離れたビューポートの中間配置を選択することができ、ビューポートがマップに表されている地理に対して5km/秒の速度で移動しているとき、ナビゲーション指示モジュール44は、中心が500m離れたビューポートの中間配置を選択することができる。
【0041】
別の手法を使用して、軌道200に沿ってビューポート102において利用可能な関心のある地点を考慮して、中間配置202A〜Cが選択される。これらの関心のある地点のいくつかは、ナビゲーション指示の中間地点として働くことができ、いくつかの実施形態では、ビューポート102は、軌道200上の直接的な地点ではなく、これらの中間地点の周りに中心があり、ナビゲーション指示は、ビューポートのほぼ幾何学的中心まで延び、またはビューポート102は、軌道200上の直接的な点の周りに中心を置くことができ、これらの中間地点がビューポートの中心に近いかどうかにかかわらず、ナビゲーション指示はビューポートにおいて可視である中間地点まで延びる。ナビゲーション指示モジュール44は、ユーザの選好、最近訪れた場所、ユーザのソーシャルグラフ(たとえば、ユーザの友人が好きな場所)などを考慮して、関心のある地点を選択することができる。いくつかの実装形態では、ユーザは、ナビゲーション指示モジュール44が、たとえば、いくつかのコントロールを動作させることによって、またはソフトウェアをインストールすることなどによって、POIを識別する際に、これらの信号を使用することができるという指示を提供する。
図4の例では、中間地点WP1、WP2、およびWP3の各々は、ユーザにとって特に関心がある可能性が高い地理的位置に対応することができる。
【0042】
ナビゲーション指示モジュール44は、中間ビューポート配置202A〜Cについて第1の詳細レベルで、および最終配置202Dについて第2の詳細レベルでナビゲーション指示を取得することができる。具体的には、ナビゲーション指示モジュール44は、ビューポート102がこれらの配置にわたって迅速に移動することが予想されるので、配置202A〜Cについて軽量のナビゲーション指示、および、ユーザがしばらくの間マップを見る可能性が高い、配置202Dについて詳細なナビゲーション指示を取得することができる。
図3を参照しながら上記で説明したように、異なる詳細レベルを選択することができる。
図4は、配置202Dでのビューポートが、目的地まで延びるポリラインに加えて、目的地の位置のストリートレベルの画像、ビューポートにおいて可視であるポリラインに沿った関心のある地点、および関心のあるポイントに含まれる会社の営業時間、価格などを含む例示的な実装を示す。さらに、配置202Dでのビューポートにおけるポリラインは、交通量が多いことを示すために、異なる色、線の太さ、または別のレンダリングパラメータを使用してレンダリングされるセクションを含む。ポリラインと同様に、関心のある地点を、デジタルマップ上にオーバーレイとして示すことができる。ビジネスデータに関して、これらの詳細は、たとえば、デジタルマップの隣または下に表示されるウィンドウの形態で提供することができる。
【0043】
さらなる実装形態では、軌道に沿った2つの連続する配置202A〜Dの各々の間の距離dは、ナビゲーション指示を取り出すことに関連付けられた決定された待ち時間を考慮して選択され得る。たとえば、距離dは、ビューポートがその配置に達する時間までに、軌道上のある配置までのナビゲーション指示がビューポートに表示可能であるように、決定された待ち時間を考慮して、選択されてもよい。一実装形態では、ナビゲーション指示モジュール44は、決定されたより高い待ち時間ではより大きく、決定されたより低い待ち時間ではより小さくなるように距離dを選択することができる。(たとえば、サーバ60と通信するクライアントデバイス12など)ワイヤレス通信ネットワークを介してリモートネットワークサーバと通信するポータブルデバイスの場合、待ち時間は、たとえば、ポータブルデバイスがある配置までのナビゲーション指示についての要求を送った時間と、リモートサーバからの応答をモバイルデバイスで受信した時間との間の間隔に基づいて、またはポータブルデバイスがある配置までのナビゲーション指示についての要求を送った時間と、ポータブルデバイスのビューポートへのナビゲーション指示のレンダリングの完了時間との間の間隔に基づいて決定され得る。デバイスがデバイスのメモリ領域に記憶されたナビゲーション指示を取り出す場合の待ち時間を決定するために、対応する方法が使用され得る。
【0044】
上記で説明したように、ナビゲーション指示モジュール44は、ユーザからのこれらのナビゲーション指示についての明示的な要求を受信することなく、ビューポートに示されたある位置までのナビゲーション指示を表示する。ビューポートの所与の配置についてこの位置を選択するために、いくつかの実装形態では、ナビゲーション指示モジュール44は、ある単一の輸送モードでのビューポートの幾何学的中心に最も近いルーティング可能なセグメントを決定する。より具体的には、ナビゲーション指示モジュール44は、輸送モードによって到達可能な、所在地住所、ランドマーク、1組の座標、ある領域を包含する地理的場所などの地理的エンティティを識別し、たとえその位置がビューポートの幾何学的中心と正確に整合されていなくても、このエンティティまでのナビゲーション指示を示す。
【0045】
一例として、ナビゲーション指示モジュール44は、ユーザが、(車を運転する、自転車に乗るなどではなく)公共輸送機関の指示に関心がある可能性が最も高いと判断し、公共輸送システムによってサービスされるどの駅または停留所がビューポートの幾何学的中心に近いかを判断する。幾何学的中心を中心とし、デジタルマップのズームレベルに依存し得るある初期半径を有する円形サーチエリアで開始し、ナビゲーション指示モジュール44は、公共輸送システムの適切な駅または停留所がサーチエリア内になるまで、半径を反復的に増加させることができる。
【0046】
いくつかの場合には、ナビゲーション指示モジュール44は、異なるタイプの輸送機関に対応する部分から構成されるマルチモードナビゲーション指示を生成することができる。たとえば、ナビゲーション指示は、運転指示と、それに続く歩行指示とを含むことができる。ナビゲーション指示モジュール44は、車によってアクセス可能な最も近いルーティング可能なセグメントへの運転指示を取り出し、次いで、このセグメントからビューポートの幾何学的中心への歩行指示、またはビューポートの幾何学的中心に近い、徒歩でアクセス可能な位置を取り出すことができる。より具体的な例として、ビューポートは、隣接する駐車場を有する公園の上に配置されてもよい。ナビゲーション指示モジュール44は、駐車場までの運転指示を取り出し、次いで、駐車場から公園の中心までの歩行指示を取り出すことができる。
【0047】
図5は、軽量の運転指示252と、それに続く歩行指示254とを有する例示的なビューポート250を示す。ナビゲーション指示モジュール44は、歩行指示254に対応するポリラインとは異なるように、運転指示252に対応するポリラインを示すことができる。たとえば、ナビゲーション指示モジュール44は、異なる色、パターン、厚さなどを使用することができる。
【0048】
ナビゲーション指示を取り出すための様々なものについて、主にナビゲーション指示モジュール44を参照して上記で説明したが、その技法の少なくともいくつかは、代替または追加として、サーバシステム60内で動作するナビゲーション指示エンジン68において実施することができることに留意されたい。たとえば、いくつかの実装形態によるナビゲーション指示モジュール44は、ビューポートの現在の配置およびジェスチャなどのユーザコマンドをナビゲーション指示エンジン68に報告し、ナビゲーション指示エンジン68は、これに応答して、ユーザからの明示的な要求なしに、ナビゲーション指示が自動的に取り出されるべきビューポートの配置、ナビゲーション指示が取り出されるべきビューポート内の位置、ナビゲーション指示が取り出されるべき詳細のレベルなどを決定する。別の実装形態では、ナビゲーション指示モジュール44は、ユーザインターフェースを介してナビゲーション指示を提供すべき(デジタルマップに対する)ビューポートの1つまたは複数の配置を決定することができ、ナビゲーション指示エンジン68は、ビューポートのこれらの配置におけるビューポート内の特定の位置、およびナビゲーション指示のための適切な詳細レベルを決定する。これらの実装形態におけるナビゲーション指示エンジン68は、ビューポート内の位置を選択するためにサーバシステム60が利用できるより堅牢なデータを使用することができる。たとえば、ビューポートのある配置について、ナビゲーション指示エンジン68は、ビューポートの幾何学的中心に近接するどの位置が、ユーザによって、具体的には、クライアントデバイス12を動作させるユーザのソーシャルグラフの一部であるユーザによって頻繁に訪問されるかを決定することができる。
【0049】
さらなる明快のために、ナビゲーション指示モジュール44および/またはナビゲーション指示エンジン68において実装することができるいくつかの例示的な方法について、
図6〜
図8を参照しながら次に説明する。これらの方法の各々は、コンピュータ可読媒体に記憶され、1つまたは複数のプロセッサ上で実行可能な1組の命令として実装することができる。
【0050】
図6は、マップビューポートの現在の速度に従って異なる詳細レベルでナビゲーション指示を取り出す例示的な方法300のフロー図である。方法300はブロック302で開始し、デジタルマップがその初期配置のビューポート内に表示される。地理的アプリケーションは、地理的検索クエリ(たとえば、「サンフランシスコ、CA」または「私の近くの薬局」など)、明示的なジェスチャベースの、タイピングされた、または話されたユーザコマンド、デジタルマップが埋め込まれたウェブサイトから受信されたコマンドなどに応答して、ビューポートをその初期配置に置くことができる。
【0051】
ブロック304において、地理的アプリケーションは、ユーザコマンドまたは一連のコマンドに従って、ビューポートの再配置を開始する。たとえば、ユーザは、タッチスクリーン上に指を置き、タッチスクリーンとの接触を維持しながら指をある方向に動かすことによって、ビューポートのドラッグを開始することができ、またはユーザは、ビューポートをある方向に、およびある加速でフリングする。
【0052】
次に、ブロック306において、ビューポートの中心またはその近くの地理的位置が決定される。地理的アプリケーションは、たとえば、ビューポートの幾何学的中心および近くのルーティング可能なセグメントを決定することができる。次いで、ブロック308において、ビューポートの現在の速度がしきい値と比較される。速度がしきい値を上回っている場合、フローはブロック310に進み、ネットワークサーバから、またはキャッシュされたデータを使用して局所的に低い詳細レベルでナビゲーション指示が取り出される。速度がしきい値を上回っていない場合、フローはブロック312に進み、そこでナビゲーション指示がネットワークサーバから高い詳細レベルで取り出される。いくつかの場合には、地理的アプリケーションは、クライアントデバイスのメモリ内のキャッシュされたデータを使用して高い詳細レベルのいくつかを取り出すことができ得るが、一般に、リアルタイムトラフィックデータなどの情報は、ネットワークサーバで利用可能であるが、ローカルには利用可能ではない。
【0053】
ブロック310または312が実行された後、フローは、ブロック314に進み、ここでナビゲーション指示がユーザインターフェースを介して表示される。ナビゲーション指示の表示は、デジタルマップ上に重ねられたポリライン、および、詳細レベルに応じて、テキスト、スピーチ、画像などの形態の進路変更ごとの命令を含むことができる。上記で説明したように、詳細なナビゲーション指示は、様々な位置のストリートレベルの画像も含むことができる。
【0054】
ブロック316において、ビューポートの再配置が完了したと判断された場合、方法は終了する。そうでなければ、ビューポートはさらに再配置され、フローはブロック306に戻る。
【0055】
次に
図7を参照すると、例示的な方法350は、マップビューポートの予想される軌道に沿った異なる地点ごとに異なる詳細レベルでナビゲーション指示を取り出すためのものである。この方法は、ブロック352で開始し、デジタルマップが初期配置のビューポート内に表示される。ブロック354で、フリングジェスチャのビューポートへの適用が検出される。フリングジェスチャは、ある方向のある加速度をビューポートに通信する。加速度および方向は、ジェスチャが完了した直後、たとえば、ユーザが指をタッチスクリーンの表面から持ち上げた後に確認することができる。
【0056】
ブロック356において、ビューポートの可能性のある軌道が決定される。可能性のある軌道は、ビューポートが休止すると予想される目標配置と、ビューポートとのさらなるユーザ対話がない場合、ビューポートが目標配置に向かう途中で通過すると予想される1組の中間配置を含む。地理的アプリケーションは、ビューポートを再配置する前または再配置が開始したとき、しかし、いずれの場合でもビューポートが目的地に到達する前に、可能性のある軌道を決定することができる。ビューポートの配置のうちのいくつかについてのナビゲーション指示は、ブロック358および360で、それぞれ高い詳細レベルおよび低い詳細レベルで取り出すことができる。この例示的な実装形態では、ブロック358で、ビューポートの終点について、詳細なナビゲーション指示が取り出され、ブロック360で、ビューポートの中間配置について、軽量のナビゲーション指示が取り出される。次いで、ブロック362で、フリングジェスチャに従ってビューポートが再配置される。
【0057】
たとえば、方法350によれば、地理的アプリケーションは、ユーザがタッチスクリーンとの接触を中断したと判断し、可能性のある軌道を決定し、対応する詳細レベルで終点のナビゲーション指示および中間配置を取り出し(または少なくとも以下で説明するこれらのナビゲーション指示の要求を送出し)、ビューポートの再配置を開始することができる。このようにして、地理的アプリケーションは、ビューポートがその位置に到達する時間までにある位置までのナビゲーション指示を表示するために必要なデータを有するか、またはビューポートがその位置に到達する時間までにすでに提出された要求に応答してこのデータを受信しようとする。
【0058】
いくつかの実装形態および/またはシナリオでは、ビューポートが移動を開始する時間までに、ナビゲーション指示のすべてが完全には取り出されない。たとえば、
図1に戻って参照すると、ナビゲーション指示を取り出すために、地理的アプリケーション42は、対応する要求をサーバシステム60に送信することができる。地理的アプリケーション42は、地理的アプリケーション42がビューポートの再配置を開始する時間までにすべての応答を受信しない可能性があるが、ビューポートにマップデータをレンダリングする前にビューポートが最初に到達する中間配置について、データがサーバシステム60から到着する場合、地理的アプリケーション42は、ナビゲーション指示をシームレスに提供する。より具体的な例として、地理的アプリケーション42は、ビューポートが位置L
1、L
2、L
3、…L
Nに到達すると予想される順番で、位置L
1、L
2、L
3、…L
Nまでのナビゲーション指示の要求R
1、R
2、R
3、…R
Nをそれぞれサーバシステム60に送り得る。ビューポートが位置L
1に到達するまでに、地理的アプリケーション42は、要求R
1およびR
2に対応するがR
3〜R
Nには対応しない応答を受信している可能性があり、次いで、ビューポートが位置L
2に到達するまでに、地理的アプリケーション42は、要求R
3〜R
5に対応するいくつかの追加の応答を受信している可能性があるなど、以下同様である。したがって、地理的アプリケーション42は、ビューポートの新しい配置についてすでに利用可能なナビゲーション指示を表示することによって、ユーザにシームレスな体験を提供することができる。より一般的には、要求R
1、R
2、R
3、…R
Nに対する応答は、ネットワーク状態および実装の詳細に応じていつでも到達することができるが、いずれの場合も、要求R
1、R
2、R
3、…R
Nは、ビューポートが対応する位置に到達する前に送出され、したがって、地理的アプリケーション42は遅延を低減する。
【0059】
次に、
図8は、マルチモードナビゲーション指示を生成するための例示的な方法400のフロー図を示す。ブロック402において、ビューポートの幾何学的中心が決定される。次に、ビューポートの幾何学的中心に最も近いルーティング可能なセグメントでの示唆された目的地が識別される。ブロック406において、マルチモードナビゲーション指示は、キャッシュされたマップデータを記憶するネットワークサーバまたはローカルメモリから取り出される。マルチモードナビゲーション指示は、複数の部分を含み、各部分についてのナビゲーション指示は、異なる輸送モードに対応する。各部分の輸送モードは、距離(たとえば、第1のしきい値を超える距離の間の飛行、第1のしきい値よりも低く、第2のしきい値を超える距離の間のドライビング)、ユーザの選好、ユーザによって選択された最後の輸送モードなどの要因を考慮して選択することができる。ブロック408において、マルチモードナビゲーション指示がデジタルマップ上に表示される。
【0060】
追加の考慮事項
以下の追加の考慮事項が、上記の説明に適用される。本明細書を通して、複数の例は、単一の例として説明された構成要素、動作、または構造を実装し得る。1つまたは複数の方法の個々の動作が別々の動作として図示され説明されているが、1つまたは複数の個々の動作が同時に実行されてもよく、動作が示した順序で実行される必要はない。例示的な構成において別々の構成要素として提示される構造および機能は、結合された構造または構成要素として実装されてもよい。同様に、単一の構成要素として提示される構造および機能は、別個の構成要素として実装されてもよい。これらおよび他の変形、修正、追加、および改良は、本明細書の主題の範囲内に入る。
【0061】
いくつかの実施形態は、本明細書では、論理またはいくつかの構成要素、モジュール、または機構を含むものとして説明されている。モジュールは、ソフトウェアモジュール(たとえば、機械可読媒体上または送信信号において具現化されるコード)またはハードウェアモジュールのいずれかを構成し得る。ハードウェアモジュールは、いくつかの動作を実行することができる有形のユニットであり、ある方法で構成または配置され得る。例示的な実施形態では、1つもしくは複数のコンピュータシステム(たとえば、スタンドアロン、クライアントまたはサーバコンピュータシステム)、またはコンピュータシステムの1つもしくは複数のハードウェアモジュール(たとえば、プロセッサまたはプロセッサ群)は、ソフトウェア(たとえば、アプリケーションまたはアプリケーション部分)によって、本明細書で説明したいくつかの動作を実行するように動作するハードウェアモジュールとして構成されてもよい。
【0062】
特に明記しない限り、「処理する」、「計算する」、「算出する」、「決定する」、「提示する」、「表示する」などの単語を使用する本明細書の説明は、1つまたは複数のメモリ(たとえば、揮発性メモリ、不揮発性メモリ、またはそれらの組合せ)、レジスタ、または情報を受信、記憶、送信、または表示する他の機械構成要素内の物理的(たとえば、電子的、磁気的、または光学的)量として表されるデータを操作または変換する機械(たとえば、コンピュータ)のアクションまたはプロセスを指し得る。
【0063】
本明細書で使用される場合、「一実施形態」または「実施形態」の任意の言及は、実施形態に関連して説明される特定の要素、特徴、構造、または特性が少なくとも1つの実施形態に含まれることを意味する。本明細書の様々な場所における「一実施形態では」という句の出現は、必ずしもすべてが同じ実施形態を指すわけではない。
【0064】
いくつかの実施形態は、それらの派生語とともに「結合された」および「接続された」という表現を使用して説明されてもよい。たとえば、いくつかの実施形態は、2つ以上の要素が物理的または電気的に直接的に接触していることを示すために「結合された」という用語を使用して説明され得る。しかしながら、「結合された」という用語は、2つ以上の要素が互いに直接には接触していないが、依然として互いに協働し、または対話していることも意味し得る。実施形態は、この文脈に限定されない。
【0065】
本明細書で使用される「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」という用語またはその任意の他の変形は、非排他的な包含をカバーすることが意図される。たとえば、要素のリストを含むプロセス、方法、物品、または装置は、必ずしもそれらの要素のみに限定されるものではなく、明示的に列挙されていない、またはそのようなプロセス、方法、物品、または装置に固有の他の要素を含み得る。さらに、反対のことが明記されていない限り、「または」は包括的な「または」を指し、排他的な「または」ではない。たとえば、条件Aまたは条件Bは、Aが真(または存在する)であり、Bが偽(または存在しない)である、Aが偽(または存在しない)であり、Bが真(または存在する)である、AとBの両方が真(または存在する)である、のうちのいずれか1つによって満たされる。
【0066】
さらに、「a」または「an」の使用は、本明細書の実施形態の要素および構成要素を記載するために使用される。これは、単に便宜上であり、様々な実施形態の一般的な意味を与えるために行われる。この説明は、1つまたは少なくとも1つを含むものとして読まれるべきであり、単数形は、それが他の意味であることが明らかでない限り、複数形も含む。
【0067】
本開示を読めば、当業者は、本明細書の開示された原理を通じてナビゲーション指示を取り出すためのさらに別の代替の構造的および機能的設計を理解するであろう。したがって、特定の実施形態およびアプリケーションを図示し、説明してきたが、開示された実施形態は、本明細書に開示された厳密な構成および構成要素に限定されないことを理解されたい。添付の特許請求の範囲に定義された意図および範囲から逸脱することなく、本明細書に開示された方法および装置の構成、動作、および詳細において、当業者には明らかであろう様々な修正、変更、および変形がなされてもよい。