(57)【特許請求の範囲】
【請求項１】
iOSオペレーティングプラットフォームを実装するiOSコンピューティングデバイス上で実行されるソフトウェアアプリケーション用のナビゲーション情報を取得するためのアプリケーションプログラミングインターフェースを実装する命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記コンピューティングデバイスが、1つまたは複数のプロセッサおよび表示デバイスを有し、前記アプリケーションプログラミングインターフェースが、
ナビゲータクラスに関連する命令の第1のセットであって、前記ナビゲータクラスが、前記ソフトウェアアプリケーションによるナビゲーションサービスの実装を制御するための複数の関数を指定し、前記ナビゲーションサービスが、前記ソフトウェアアプリケーションのユーザにナビゲーション情報を提供し、前記関数が、ルートの表示、ナビゲーション開始、ナビゲーション停止、およびカメラ角度変更のうちの1つまたは複数を備える、命令の第1のセットと、
ナビゲータデリゲートプロトコルに関連する命令の第2のセットであって、前記ナビゲータデリゲートプロトコルが、前記ナビゲータクラスのデリゲートであり、前記ナビゲータデリゲートプロトコルが、前記ナビゲーションサービスの一部として提供される前記ナビゲーション情報を更新するための1つまたは複数の呼出しを実装する、命令の第2のセットとを備える、
非一時的コンピュータ可読記憶媒体。
【請求項２】
前記アプリケーションプログラミングインターフェースが、UI設定クラスに関連する命令の第3のセットを備え、前記UI設定クラスが、前記ソフトウェアアプリケーションによって提示される前記ナビゲーションサービスに関連するユーザインターフェースを制御するための1つまたは複数のパラメータを指定する、請求項1に記載の非一時的コンピュータ可読記憶媒体。
【請求項３】
前記ナビゲータデリゲートプロトコルが、前記ソフトウェアアプリケーションのユーザのジオロケーションが更新されると呼び出されるように動作可能なロケーション更新関数を備える、請求項1に記載の非一時的コンピュータ可読記憶媒体。
【請求項４】
前記ナビゲータデリゲートプロトコルが、前記ソフトウェアアプリケーションのユーザが中間地点クラスのインスタンスに到着したときに呼び出されるように動作可能な中間地点到着関数を備える、請求項1に記載の非一時的コンピュータ可読記憶媒体。
【請求項５】
前記ナビゲータデリゲートプロトコルが、現在のルートが変更またはクリアされると呼び出されるように動作可能なルート変更関数を備える、請求項1に記載の非一時的コンピュータ可読記憶媒体。
【請求項６】
前記ナビゲータデリゲートプロトコルが、目的地までの推定時間が更新されると呼び出されるように動作可能な残り時間更新関数を備える、請求項1に記載の非一時的コンピュータ可読記憶媒体。
【請求項７】
前記ナビゲータクラスが、前記残り時間更新関数をトリガするように構成された指定可能時間更新しきい値プロパティを備える、請求項6に記載の非一時的コンピュータ可読記憶媒体。
【請求項８】
前記ナビゲータデリゲートプロトコルが、目的地までの推定距離が更新されると呼び出されるように動作可能な残り距離更新関数を備える、請求項1に記載の非一時的コンピュータ可読記憶媒体。
【請求項９】
前記ナビゲータデリゲートプロトコルが、前記残り距離更新関数をトリガするように構成された指定可能距離更新しきい値プロパティを備える、請求項8に記載の非一時的コンピュータ可読記憶媒体。
【請求項１０】
前記ナビゲータクラスが、ナビゲーションに対する1つまたは複数の目的地を設定するように動作可能な目的地設定関数を備え、前記目的地設定関数が、前記1つまたは複数の目的地までのルートが見つかるとokステータスを用いて呼び出されるように構成されたコールバックを備える、請求項1に記載の非一時的コンピュータ可読記憶媒体。
【請求項１１】
前記目的地設定関数のパラメータが、ナビゲーション中間地点クラスのインスタンスを備える、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項１２】
前記ナビゲータクラスが、マップビュークラスのインスタンスに関連するマップとともにナビゲーションルートを表示するための、前記マップビュークラスの前記インスタンスのコントローラとして構成される、請求項1に記載の非一時的コンピュータ可読記憶媒体。
【請求項１３】
前記アプリケーションプログラミングインターフェースが、マップビュークラスのインスタンスを前記アプリケーションプログラミングインターフェースの一部としてラップするように構成されるナビゲーションマップクラスに関連する命令の第3のセットを備える、請求項1に記載の非一時的コンピュータ可読記憶媒体。
【請求項１４】
iOSオペレーティングシステムを実装するコンピューティングデバイスであって、
表示デバイスと、
1つまたは複数のプロセッサと、
1つまたは複数のメモリデバイスとを備え、前記1つまたは複数のメモリデバイスが、ソフトウェアアプリケーションの一部としてナビゲーションサービスを提供すべきナビゲーション情報を取得するために、前記ソフトウェアアプリケーションによって起動されるアプリケーションプログラミングインターフェースを実装するコンピュータ可読命令を記憶し、前記命令が、
ナビゲータクラスに関連する命令の第1のセットであって、前記ナビゲータクラスが、前記ソフトウェアアプリケーションによるナビゲーションサービスの実装を制御するための複数の関数を指定し、前記ナビゲーションサービスが、前記ソフトウェアアプリケーションのユーザにナビゲーション情報を提供し、前記関数が、ルートの表示、ナビゲーション開始、ナビゲーション停止、およびカメラ角度変更のうちの1つまたは複数を備える、命令の第1のセットと、
ナビゲータデリゲートプロトコルに関連する命令の第2のセットであって、前記ナビゲータデリゲートプロトコルが、前記ナビゲータクラスのデリゲートであり、前記ナビゲータデリゲートプロトコルが、前記ナビゲーションサービスの一部として提供される前記ナビゲーション情報を更新するための1つまたは複数の呼出しを実装する、命令の第2のセットと、
UI設定クラスに関連する命令の第3のセットであって、前記UI設定クラスが、前記ソフトウェアアプリケーションによって提示される前記ナビゲーションサービスに関連するユーザインターフェースを制御するための1つまたは複数のパラメータを指定する、命令の第3のセットとを備え、
前記ナビゲータクラスが、マップビュークラスのインスタンスに関連するマップとともにナビゲーションルートを表示するための、前記マップビュークラスの前記インスタンスのコントローラとして構成される、
コンピューティングデバイス。
【請求項１５】
前記ナビゲータクラスが、ナビゲーションに対する1つまたは複数の目的地を設定するように動作可能な目的地設定関数を備え、前記目的地設定関数が、前記1つまたは複数の目的地までのルートが見つかるとokステータスを用いて呼び出されるように構成されたコールバックを備え、前記目的地設定関数のパラメータが、ナビゲーション中間地点クラスのインスタンスを備える、請求項14に記載のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、ナビゲーション情報を取得するためにiOSデバイス上で実装されるソフトウェアアプリケーション用のアプリケーションプログラミングインターフェースに関する。
【背景技術】
【０００２】
モバイルコンピューティングデバイス(たとえば、スマートフォン、タブレット、スマートウォッチなど)などのコンピューティングデバイス上で実装されるアプリケーションは、ビジネス、社会、健康、および他の目的を含む、様々な目的のために開発されている。これらのアプリケーションは、情報をユーザに提示し、かつユーザがアプリケーションと対話することを可能にするための、ユーザインターフェース(たとえば、グラフィカルユーザインターフェース)を提供することができる。モバイルコンピューティングデバイス用の一般的なアプリケーションは、変化に富む地理情報(たとえば、マップ上で提示される現在のロケーション情報)をユーザにとって利用可能にさせるマップアプリケーションを含む。
【０００３】
アプリケーションプログラミングインターフェースにより、コンピューティングデバイス上で実装されるアプリケーションが、様々なサービスと対話して情報および機能性をユーザに提供することが可能になり得る。アプリケーションプログラミングインターフェースは、開発者にツールを提供して、情報、プログラミング、サービス、フレームワーク、および構造を、ユーザによるアクセスのためにアプリケーションの中に容易に組み込むことができる。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示の実施形態の態様および利点は、以下の説明の中で部分的に記載され、またはその説明から習得されてよく、もしくは本実施形態の実践を通じて習得されてもよい。
【０００５】
本開示の例示的な一態様は、iOSオペレーティングシステムを実装するiOSコンピューティングデバイス上で実行されるソフトウェアアプリケーション用のナビゲーション情報を取得するためのアプリケーションプログラミングインターフェースを実装する、(命令を記憶する非一時的コンピュータ可読媒体などの、ただし、必ずしも非一時的形態で記憶されることを伴わずに随意に通信ネットワークを介してダウンロードされるプログラムも含む)コンピュータプログラム製品を対象とする。コンピューティングデバイスは、1つまたは複数のプロセッサおよび表示デバイスを有することができる。アプリケーションプログラミングインターフェースは、ナビゲータクラス(navigator class)に関連する命令の第1のセットを含むことができる。ナビゲータクラスは、ソフトウェアアプリケーションによるナビゲーションサービスの実装を制御するための複数の関数を指定することができる。ナビゲーションサービスは、ソフトウェアアプリケーションのユーザにナビゲーション情報を提供することができる。APIは、ナビゲータデリゲートプロトコルに関連する命令の第2のセットを含むことができる。ナビゲータデリゲートプロトコルは、ナビゲータクラスのデリゲートであり得る。ナビゲータデリゲートプロトコルは、ナビゲーションサービスの一部として提供されるナビゲーション情報を更新するための1つまたは複数の呼出しを実装することができる。
【０００６】
本開示の第1の特定の表現は、iOSオペレーティングプラットフォームを実装するiOSコンピューティングデバイス上で実行されるソフトウェアアプリケーション用のナビゲーション情報を取得するためのアプリケーションプログラミングインターフェースを実装する命令を備えるコンピュータプログラム製品であり、コンピューティングデバイスは、1つまたは複数のプロセッサおよび表示デバイスを有し、アプリケーションプログラミングインターフェースは、
ナビゲータクラスに関連する命令の第1のセットであって、ナビゲータクラスが、ソフトウェアアプリケーションによるナビゲーションサービスの実装を制御するための複数の関数を指定し、ナビゲーションサービスが、ソフトウェアアプリケーションのユーザにナビゲーション情報を提供し、関数が、ルートの表示、ナビゲーション開始、ナビゲーション停止、およびカメラ角度変更のうちの1つまたは複数を備える、命令の第1のセットと、
ナビゲータデリゲートプロトコルに関連する命令の第2のセットであって、ナビゲータデリゲートプロトコルが、ナビゲータクラスのデリゲートであり、ナビゲータデリゲートプロトコルが、ナビゲーションサービスの一部として提供されるナビゲーション情報を更新するための1つまたは複数の呼出しを実装する、命令の第2のセットとを備える。
【０００７】
本開示の第2の特定の表現は、1つまたは複数のプロセッサを有するiOSコンピューティングデバイス上でナビゲーションアプリケーションプログラミングインターフェースを使用するソフトウェアアプリケーションの一部として、ナビゲーションサービスを統合するための方法であり、コンピューティングデバイスは、iOSオペレーティングシステムを実装し、方法は、
1つまたは複数のプロセッサによって、マップの表示を提供するためのマップビュークラス(map view class)をインスタンス化することと、
1つまたは複数のプロセッサによって、ナビゲーションアプリケーションプログラミングインターフェースの一部として指定されるナビゲータクラスの1つまたは複数のインスタンスを作成することと、
1つまたは複数のプロセッサによって、マップとともにルートおよび進路変更ごとの方向を表示するためにナビゲータクラスのインスタンスをマップにバインドすることと、
1つまたは複数のプロセッサによって、ナビゲーションアプリケーションプログラミングインターフェースを使用するナビゲーションサービスを実装することとを備える。
【０００８】
本発明の第3の特定の表現は、iOSオペレーティングシステムを実装するコンピューティングデバイスであり、コンピューティングデバイスは、
表示デバイスと、
1つまたは複数のプロセッサと、
1つまたは複数のメモリデバイスとを備え、1つまたは複数のメモリデバイスは、ソフトウェアアプリケーションの一部としてナビゲーションサービスを提供すべきナビゲーション情報を取得するために、ソフトウェアアプリケーションによって起動されるアプリケーションプログラミングインターフェースを実装するコンピュータ可読命令を記憶し、命令は、
ナビゲータクラスに関連する命令の第1のセットであって、ナビゲータクラスが、ソフトウェアアプリケーションによるナビゲーションサービスの実装を制御するための複数の関数を指定し、ナビゲーションサービスが、ソフトウェアアプリケーションのユーザにナビゲーション情報を提供し、関数が、ルートの表示、ナビゲーション開始、ナビゲーション停止、およびカメラ角度変更のうちの1つまたは複数を備える、命令の第1のセットと、
ナビゲータデリゲートプロトコルに関連する命令の第2のセットであって、ナビゲータデリゲートプロトコルが、ナビゲータクラスのデリゲートであり、ナビゲータデリゲートプロトコルが、ナビゲーションサービスの一部として提供されるナビゲーション情報を更新するための1つまたは複数の呼出しを実装する、命令の第2のセットと、
UI設定クラス(UI settings class)に関連する命令の第3のセットであって、UI設定クラスが、ソフトウェアアプリケーションによって提示されるナビゲーションサービスに関連するユーザインターフェースを制御するための1つまたは複数のパラメータを指定する、命令の第3のセットとを備え、
ナビゲータクラスは、マップビュークラスのインスタンスに関連するマップとともにナビゲーションルートを表示するための、マップビュークラスのインスタンスのコントローラとして構成される。
【０００９】
本開示の他の例示的な態様は、ナビゲーション情報を提供するためのアプリケーションプログラミングインターフェースに関連するシステム、装置、コンピュータプログラム製品(たとえば、有形の非一時的コンピュータ可読媒体)、ユーザインターフェース、メモリデバイス、および電子デバイスを対象とする。
【００１０】
様々な実施形態のこれらおよび他の特徴、態様、および利点は、以下の説明および添付の特許請求の範囲を参照すると、よりよく理解されるようになる。本明細書の一部に組み込まれ本明細書の一部を構成する添付図面は、本開示の実施形態を例示し、説明と一緒に、関連する原理を説明するのに役立つ。
【００１１】
以下の点で添付の図を参照する、当業者を対象とする実施形態の詳細な説明が、本明細書に記載される。
【図面の簡単な説明】
【００１２】
【図１】本開示の例示的な実施形態による、アプリケーションプログラミングインターフェースを使用するソフトウェアアプリケーションの一部としてナビゲーションサービスを実装するための例示的なシステムの概要を示す図である。
【図２】本開示の例示的な実施形態による、ソフトウェアアプリケーションを実装する例示的なユーザデバイスのブロック図である。
【図３】本開示の例示的な実施形態による例示的な方法のフロー図である。
【図４】本開示の例示的な実施形態による例示的なナビゲーションアプリケーションプログラミングインターフェースを示す図である。
【図５】本開示の例示的な実施形態による、ナビゲータクラスに関連する命令の例示的な第1のセットを示す図である。
【図６】本開示の例示的な態様による、ナビゲータデリゲートプロトコルに関連する命令の例示的な第2のセットを示す図である。
【発明を実施するための形態】
【００１３】
ここで実施形態への参照が詳細に行われ、その1つまたは複数の例が図面に示される。各例は、本実施形態の説明として提供され、本開示の限定としては提供されない。事実上、本開示の範囲または趣旨を逸脱することなく本実施形態に様々な修正および変形が加えられ得ることが、当業者に明らかになろう。たとえば、一実施形態の一部として図示または説明する特徴は、またさらなる実施形態を生み出すために、別の実施形態とともに使用され得る。したがって、本開示の態様がそのような修正および変形をカバーすることが意図される。
【００１４】
本開示の例示的な態様は、(たとえば、iOSオペレーティングシステムを使用する)iOSオペレーティングプラットフォーム上に実装される1つまたは複数のコンピューティングデバイス上で実装されるソフトウェアアプリケーションにおいてナビゲーション情報を提供するための、アプリケーションプログラミングインターフェース(「API」)を対象とする。iOSオペレーティングプラットフォームは、モバイルデバイス上で使用するために作成されたモバイルオペレーティングシステムである。本明細書で使用する「iOSコンピューティングデバイス」とは、iOSオペレーティングシステムを実装するコンピューティングデバイスを指す。
【００１５】
いくつかの実施形態では、ナビゲーションAPIにより、アプリケーション開発者が、ナビゲーションデータプロバイダまたは他のソースによって提供されるナビゲーションエクスペリエンスを彼らのソフトウェアアプリケーションの中に組み込むことが可能になり得る。APIにより、開発者が、様々なプラットフォームおよび最終使用事例に対応するためにナビゲーションエクスペリエンスを容易にカスタマイズし適合させることが可能になり得る。
【００１６】
より詳細には、APIは、iOSコンピューティングデバイス上で実装されるソフトウェアアプリケーションによって起動されたとき、データプロバイダ(たとえば、遠隔のデータプロバイダ、またはiOSコンピューティングデバイス上に局所的に記憶されたデータプロバイダ)にルーティング情報を要求し、データプロバイダからルーティング情報を受け取るように構成され得る。APIは、ソフトウェアアプリケーションの中に組み込まれたナビゲーションサービスを提供するためのルーティング情報に基づいて、ナビゲーション情報を(たとえば、グラフィカルユーザインターフェース構成要素を通じて、またはオーディオキューおよび/もしくは振動キューを通じて)提示するように構成され得る。
【００１７】
ナビゲーションサービスは、起点から目的地までユーザを案内するために使用され得るナビゲーション情報を提供するアプリケーション(たとえば、ソフトウェアアプリケーション)であり得る。いくつかの実施形態では、ソフトウェアアプリケーションの中に組み込まれたナビゲーションサービスは、ユーザがナビゲーションルートまたは他の経路に沿って移動するにつれて、ナビゲーション情報(たとえば、進路変更ごとのナビゲーション情報)をユーザに提供することができる。より詳細には、いくつかの実施形態では、ナビゲーションサービスは、現在位置から目的地までユーザを導くルートを受け取ることができる。一例として、ルートは、各々がルート部分(たとえば、道路の名称または番号、距離、移動時間、速度制限)、および次のルート部分にアクセスするための操縦(たとえば、左折、右合流、直進)を表す、一連のステップを含むことができる。ナビゲーションサービスは、起点から目的地までユーザを案内するために、グラフィカルユーザインターフェースを通じて、また1つまたは複数のキュー(たとえば、オーディオキューまたはビデオキュー)を介して、ルートをユーザに提供することができる。
【００１８】
いくつかの実施形態では、ソフトウェアアプリケーションは、ルーティング情報および他のナビゲーション情報を取得するために、ナビゲーションデータプロバイダまたは他のソース(たとえば、ナビゲーション情報の局所的ソース)によって実装されるルーティングエンジンと、APIを介して対話することができる。ナビゲーションデータプロバイダは、ソフトウェアアプリケーションの開発者と比較して別個のエンティティに関連することができる。たとえば、ナビゲーションデータプロバイダは、地理情報システムをホストするウェブサーバに関連することができる。ナビゲーション情報は、1つまたは複数の中間地点までのルートを含むことができる。ナビゲーション情報は、ルートおよび他の情報とともに提示するためのマップデータをさらに含むことができる。ナビゲーション情報は、リアルタイムまたはほぼリアルタイムでナビゲーションエクスペリエンスをユーザに提供するために、ユーザがナビゲーションルートを移動するにつれて、(たとえば、APIの一部として実装された1つまたは複数のイベントリスナインターフェースを通じて)継続的に更新され得る。
【００１９】
APIは、ソフトウェアアプリケーションによって実装されたとき、ソフトウェアアプリケーションとともに表示されるグラフィカルユーザインターフェース構成要素の中で、ナビゲーションサービスに関連するナビゲーション情報を視覚的に提示することができる。たとえば、グラフィカルユーザインターフェース構成要素は、マップを表示することができる。ナビゲーションモード中、グラフィカルユーザインターフェース構成要素は、マップ上のポリラインでルートを表示することができる。ユーザの位置は、ユーザがルートをナビゲートするにつれて、ルートに沿って更新され得る。たとえば、ナビゲーションサービスは、ユーザ位置がナビゲーションルートに沿って変化するにつれてユーザの位置がナビゲーションルートに沿って継続的に更新される、グラフィカルユーザインターフェースを提供することができる。様々な中間地点が、マップの中に配置されたマーカーによって識別され得る。中間地点に到着するために残っている推定時間または推定距離(「ETD情報」)、コンパスインターフェース要素、ナビゲーション方位要素などの、他の情報がグラフィカルユーザインターフェース構成要素の中に提示され得る。いくつかの実施形態では、ナビゲーション情報は、グラフィカルユーザインターフェース構成要素におけるナビゲーション情報の視覚的表示を伴うかまたは伴わずに、オーディオ案内を使用して提供され得る。
【００２０】
本開示の特定の態様によれば、APIは、1つまたは複数のプロセッサによって実行されたとき、開発者のソフトウェアアプリケーションの中へのナビゲーションエクスペリエンスの統合を容易にする、コンピュータ可読命令のセットを含むことができる。命令のセットは、1つまたは複数のプロセッサによって実装されたとき、API、ならびにソフトウェアアプリケーションの一部としてのナビゲーション情報のユーザへの表示および/または配信を介して、ソフトウェアアプリケーションによるナビゲーションデータプロバイダとの対話を統率することができる。
【００２１】
より詳細には、ソフトウェアアプリケーションの開発者が直面している、APIに関連する例示的な命令は、ナビゲーションサービスの視覚的出力の表示を統率する1つまたは複数のパラメータを指定する命令のセットを含むことができる。APIは、ナビゲーションサービスの実装を制御する1つまたは複数のパラメータを指定する命令のセット、およびナビゲーションデータプロバイダによって提供されるルーティングエンジンとのAPIの対話を統率する命令のセットをさらに含むことができる。本開示の特定の態様によれば、ナビゲーションAPIは、複数の主要なクラスおよびプロトコルを含む、開発者が直面するAPIを含むことができる。クラスは、APIに関連する利用規約および/またはライセンス情報を提供するためのユーティリティ関数を含むことができるナビゲーションサービスクラス(navigation service class)を含むことができる。そのクラスは、ナビゲータクラスを含むことができる。ナビゲータクラスは、ナビゲーションをプログラム的に制御するための関数を提供するシングルトンであり得る。関数は、たとえば、ルートの表示、ナビゲーション開始、ナビゲーション停止、およびカメラ角度変更のうちの1つまたは複数を含むことができる。いくつかの実施形態では、APIは、UI要素に関係する設定を指定するために開発者によって使用され得るUI設定クラスを含むことができる。
【００２２】
いくつかの実施形態では、APIは、ナビゲータデリゲートプロトコルを含むことができる。ナビゲータデリゲートプロトコルは、ナビゲータクラスのデリゲートとして指定され得る。ナビゲータデリゲートプロトコルは、ナビゲーション関連コールバック(たとえば、ロケーション更新、残り時間更新および/または残り距離更新など)を指定することができる。
【００２３】
いくつかの実施形態では、ナビゲーションAPIは、マップアプリケーションプログラミングインターフェースを伴う機能性をさらに使用または共有することができる。マップアプリケーションプログラミングインターフェースは、カメラ追従関数(camera following function)を提供するためのマップビュークラスを含むことができる。いくつかの実施形態では、カメラ追従関数は、ナビゲータクラスがインスタンス化されるかまたはインスタンス化されずに使用され得る。
【００２４】
いくつかの実施形態では、ナビゲータクラスとマップビュークラスとの間の関係は、別個のマップAPIの一部として指定されるマップビュークラスの機能性の1つまたは複数の態様を、ナビゲーションAPIが再使用または実装できるように指定され得る。いくつかの実施形態では、ナビゲータクラスは、マップとともにルートおよびナビゲーションユーザインターフェース要素を表示するために、既存のマップビュークラスのインスタンスの制御権を取ることができる。いくつかの実施形態では、マップビュークラスは、ナビゲータクラスの中にラップ(wrap)され得る。
【００２５】
本開示の態様は、いくつかの技術的な効果および利点をもたらすことができる。たとえば、APIは、開発者のソフトウェアアプリケーションの中へのナビゲーションサービスの統合を容易にすることができる。ナビゲーション情報(たとえば、ロケーション更新、残り時間更新および/または残り距離更新など)を取得するためのコールバックに対するデリゲートプロトコルの使用は、iOSオペレーティングプラットフォーム環境における実装を容易にすることができる。コールバックがソフトウェアアプリケーションではなくAPIによって実行されるという事実は、システムのセキュリティおよび信頼性を高める(たとえば、APIの開発者は、信頼でき、かつソフトウェアアプリケーションの開発者に開示される必要がない通信のために、セキュリティプロトコルを実装することができる)。ナビゲータクラスとマップビュークラスとの間の関係は、マップを描くこと、交通情報を示すこと、手作業のカメラ角度を設定すること、マーカーを追加することなどの、機能性を提供する既存のマップAPIと、ナビゲーションAPIが機能性を共有するようなものであってよい。APIは、相乗りアプリケーション、出荷/配送アプリケーション、ソーシャルアプリケーション、および他の最終使用アプリケーションのためなどの、様々な最終使用ニーズのためにナビゲーションサービスのカスタマイゼーションを可能にすることができる。
【００２６】
本開示の態様は、クラス名、関数名、プロパティ名、およびプロトコル名(たとえば、ナビゲータクラス、ナビゲータデリゲートプロトコル、UI設定クラス、ロケーション更新関数(update location function)、中間地点到着関数(arrive at waypoint function)、ルート変更関数(change route function)、中間地点到着関数、残り時間更新関数(update remaining time function)、目的地設定関数(set destinations function)、マップビュークラス、ナビゲーション中間地点クラス(navigation waypoint class)、ナビゲーションマップクラス(navigation map class)など)を参照する。本明細書で提供する開示を使用する当業者は、クラス名が識別目的のために提供されるにすぎず本開示の範囲を限定することを意図しないことを理解されたい。たとえば、ナビゲータクラスは、名称にかかわらず、本明細書で説明するナビゲータクラスの1つまたは複数の態様を含む任意のクラスであり得る。
【００２７】
図1は、本開示の例示的な実施形態による、ナビゲーションAPIを使用するソフトウェアアプリケーションの一部としてナビゲーションサービスを実装するための例示的なシステム100の概要を示す。システム100は、ナビゲーションデータプロバイダ114から通信ネットワーク116を介してナビゲーションデータを受信できるユーザデバイス112を含むことができる。ユーザデバイス112は、たとえば、スマートフォン、タブレット、ウェアラブルデバイス、ラップトップ、デスクトップ、モバイルデバイス、動作中にユーザによって運ばれることが可能なデバイス、1つもしくは複数のプロセッサを有するディスプレイ、車両システム、または他のユーザデバイス112であり得る。
【００２８】
ソフトウェアアプリケーション120は、ユーザデバイス112上で実装され得る。ソフトウェアアプリケーションは、たとえば、地図作成アプリケーション、ブラウザ、相乗りアプリケーション、配送を支援するために使用されるアプリケーション、ソーシャルメディアアプリケーション、またはユーザにナビゲーション情報を提供する必要があり得る他のソフトウェアアプリケーションであり得る。ソフトウェアアプリケーション120は、ユーザデバイス112上に局所的に記憶され得るか、または、たとえば、ユーザデバイス112上に実装されるブラウザを介してアクセスされるウェブアプリケーションであり得る。いくつかの実施形態では、ソフトウェアアプリケーション120は、ナビゲーションデータプロバイダ114に関連するエンティティから独立しており、かつ/またはそうしたエンティティと提携していない、サードパーティのエンティティによって開発され得る。
【００２９】
ソフトウェアアプリケーション120は、ナビゲーションサービスがソフトウェアアプリケーション120の中に組み込まれ得るように、通信ネットワーク116を介してナビゲーションデータプロバイダ114からのナビゲーションデータにアクセスし、かつそうしたナビゲーションデータを提供するために、ナビゲーションAPI130を起動することができる。本開示の例示的な態様は、例示および説明のために、遠隔ナビゲーションデータプロバイダ114からのデータにアクセスすることを用いて説明される。本明細書で提供する開示を使用する当業者は、API130が、ユーザデバイス112上に位置する局所的なソースまたはアプリケーションなどの、他のソースからのデータにアクセスできることを理解されたい。
【００３０】
ナビゲーションサービスは、ユーザデバイス112を運ぶユーザまたは車両が起点から1つまたは複数の目的地までのルートに沿って移動するにつれて、リアルタイムまたはほぼリアルタイムでナビゲーション情報(たとえば、進路変更ごとのナビゲーション情報)をユーザに提示することができる。ナビゲーションサービスは、1つまたは複数の表示デバイス上でナビゲーション情報をユーザに提示するためのグラフィカルユーザインターフェース構成要素を含むことができる。加えて、ナビゲーションサービスは、ナビゲーション情報(たとえば、進路変更ごとの方向)を示すオーディオ案内または他の通知(たとえば、振動通知)をユーザに提供することができる。
【００３１】
再び図1を参照すると、API130は、ナビゲーションデータプロバイダ114によって実装されるルーティングエンジン140とインターフェースするように構成され得る。ルーティングエンジン140は、たとえば、1つまたは複数の中間地点までのルートを算出し、地図作成データにアクセスし、様々なナビゲーションイベントに基づいてナビゲーションデータを更新し、API130からのナビゲーションデータを求める要求に応答するように構成され得る。いくつかの実施形態では、ナビゲーションデータプロバイダ114は、ウェブサーバなどの1つまたは複数のサーバを含むことができる。1つまたは複数のサーバは、1つまたは複数のプロセッサおよび1つまたは複数のメモリデバイスを含むことができる。1つまたは複数のメモリデバイスは、たとえば、ルーティングエンジン140を実装するための、コンピュータ可読命令を記憶することができる。いくつかの実施形態では、ルーティングエンジン140は、たとえば、地理情報システム115に関連するデータにアクセスすることができる。地理情報システム115は、その要素の地理的座標によってインデックスが付けられているデータを含むことができる。地理情報システム115に関連するデータは、たとえば、マップデータ、ルートデータ、地理的画像、様々な中間地点に関連するデータ(たとえば、ビジネスリスト名、住所、地理的座標など)、および他のデータを含むことができる。
【００３２】
アプリケーション120は、ネットワーク116を介してAPI130を経由してナビゲーションデータプロバイダ114と対話することによって、ナビゲーションサービスを実装することができる。ネットワーク116は、ローカルエリアネットワーク(たとえば、イントラネット)、ワイドエリアネットワーク(たとえば、インターネット)、セルラーネットワーク、またはそれらの何らかの組合せなどの、任意のタイプの通信ネットワークであり得る。ネットワーク116はまた、直接接続を含むことができる。概して、通信は、様々な通信プロトコル(たとえば、TCP/IP、HTTP、SMTP、FTP)、符号化もしくはフォーマット(たとえば、HTML、XML)、および/または保護方式(たとえば、VPN、セキュアHTTP、SSL)を使用する、任意のタイプの有線接続および/またはワイヤレス接続を使用して、ネットワーク116を介して搬送され得る。
【００３３】
図2は、本開示の例示的な実施形態による、ナビゲーションAPI130を実装するように構成された例示的なユーザデバイス112を示す。図示のように、ユーザデバイス112は、命令メモリ152、メモリ152の中に記憶された命令を実行するように構成された1つまたは複数のプロセッサ154、表示デバイス156、ネットワーク通信をサポートするネットワークインターフェース158、および記憶メモリ160を含む。明快のために、命令メモリ152および記憶メモリ160は別個に図示される。しかしながら、構成要素152および160がまた、同じメモリモジュール内の領域であり得ることが理解されよう。より一般的には、ユーザデバイス112は、別個にまたは同じチップもしくは基板の上に設けられてよい、1つまたは複数の追加のプロセッサ、メモリデバイス、ネットワークインターフェースを含むことができる。さらに、構成要素152および160は、持続性メモリ(たとえば、フラッシュメモリ)、揮発性メモリ(たとえば、RAM)、もしくはその両方、または他の好適なメモリを含んでよい。
【００３４】
命令メモリ152は、オペレーティングシステム(OS)170、ナビゲーションAPI130、およびソフトウェアアプリケーション120の、命令のセットを記憶することができる。OS170は、特にモバイルデバイス用に開発されたモバイルOSであり得る。したがって、OS170は、ソフトウェアアプリケーションが、ワイヤレスネットワークパラメータ(たとえば、ワイヤレスネットワークの識別情報、サービス品質)などのデータにアクセスすること、ならびに電話、(たとえば、グローバル測位サービス(GPS)またはWLANを介した)ロケーション決定、ワイヤレスネットワークデータ発呼などのようなサービスを起動することを可能にする、機能を含むことができる。いくつかの例示的な実装形態では、OSは、iOSモバイルオペレーティングシステムまたは類似のオペレーティングシステムを含むか、またはそれらに基づく。
【００３５】
ソフトウェアアプリケーション120は、たとえば、地図作成アプリケーション、ナビゲーションアプリケーション、相乗りアプリケーション、配送を支援するためのアプリケーション、ソーシャルメディアアプリケーションなどであり得る。さらに、ソフトウェアアプリケーション120は、ブラウザウィンドウの割り振られた部分内でナビゲーション情報を表示するためにナビゲーションAPI130を起動する、ウェブブラウザアプリケーションであり得る。概して、ナビゲーションAPI130は、ユーザデバイス120上で実行する任意の好適なソフトウェアアプリケーションにとって利用可能にされ得る。また、複数の異なるソフトウェアアプリケーションが、ナビゲーションAPI130を起動してもよい。
【００３６】
上記で説明したように、ソフトウェアアプリケーション120は、ナビゲーションサービスをソフトウェアアプリケーション120の中に組み込むために、ナビゲーションAPI130を起動することができる。たとえば、一例では、ソフトウェアアプリケーション120は、1つまたは複数の中間地点をナビゲーションAPI130に提供することができる。ナビゲーションAPI130は、1つまたは複数の中間地点に基づいてナビゲーションルートを決定するために、(たとえば、局所的なまたは遠隔の)ナビゲーションデータプロバイダにナビゲーションデータを要求することができる。ナビゲーションAPI130は、ナビゲーションサービスの一部としてのユーザへのナビゲーション情報の提示を制御するための命令のセットを含むことができる。いくつかの実施形態では、ナビゲーションAPI130は、マップAPI135と一緒に関数を使用または共有することができる。たとえば、マップAPI135の一部として提供されるマップビュークラスは、ソフトウェアアプリケーション120のユーザにマップ機能性およびナビゲーション機能性を提供するために、ナビゲーションAPI130とともに様々な方法で使用され得る。
【００３７】
いくつかの実施形態では、ユーザデバイスは測位システムを含むことができる。測位システムは、デバイスの位置を決定するための1つまたは複数のデバイスまたは回路構成を含むことができる。たとえば、測位デバイスは、衛星ナビゲーション測位システム(たとえば、GPSシステム、Galileo測位システム、グローバルナビゲーション衛星システム(GLONASS:GLObal Navigation satellite system)、BeiDou衛星ナビゲーションおよび測位システム)、慣性ナビゲーションシステム、デッドレコニングシステム(dead reckoning system)を使用することによって、IPアドレスに基づいて、セルラータワーもしくはWiFiホットスポットまでの三角測量および/もしくは近接度、ビーコンなどを使用することによって、ならびに/または位置を決定するための他の好適な技法を使用することによって、実際のまたは相対的な位置を決定することができる。
【００３８】
ナビゲーションAPI130および/またはマップAPI135は、1つまたは複数の関数、データ構造などとして実装され得る。さらに、ナビゲーションAPI130および/またはマップAPIは、プロセッサ154上で直接実行するコンパイル済みコード、または代替として、アプリケーション120によってランタイムで解釈されるスクリプト言語などの任意の他の形態の命令を含んでよい。命令は、いくつかの実施形態では、少なくとも部分的にSwiftまたはObjective Cなどのプログラミング言語を使用して実装され得る。ナビゲーションAPI130および/またはマップAPI135は、例示的な一実装形態では、開発者がソフトウェアアプリケーション120のコードの中に含めることができるいくつかの関数、ならびにこれらの関数を実装する命令の、十分に立証されたプロトタイプを含む。いくつかの実施形態では、ナビゲーションAPI130および/またはマップAPI135は、静的ライブラリとして開発者に提供され得る。
【００３９】
ナビゲーションAPI130は、図2ではマップAPI135とは別個として図示される。しかしながら、いくつかの実施形態では、ナビゲーションAPI130は、全体的なマップAPI135の機能性の一部として含められ得る。いくつかの実施形態では、マップAPI135は、ナビゲーションAPI130の機能性の一部として含められ得る。
【００４０】
図3は、本開示の例示的な実施形態による、ナビゲーションAPIを使用するソフトウェアアプリケーションの一部としてナビゲーションサービスを統合するためにモバイルデバイス112のプロセッサ154によって実行される例示的な方法(300)のフロー図を示す。図3は、例示および説明のために、特定の順序で実行されるステップを示す。本明細書で提供する開示を使用する当業者は、本明細書で提供する方法のうちのいずれかの様々なステップが、本開示の範囲から逸脱することなく、適合、拡張、省略、同時実行、および/または様々な方法で修正され得ることを理解されたい。
【００４１】
(302)において、方法は、ソフトウェアアプリケーションの起動時にAPI鍵をサービスクラス(service class)に提供することを含むことができる。サービスクラスは、マップAPI用のサービスクラスであり得る。サービスクラスは、サービスクラスのインスタンスをマップAPIと共有するための共有サービス関数(shared services function)を含むことができる。サービスクラスは、マップAPIおよびナビゲーションAPIのプロバイダにAPI鍵を提供できるAPI鍵提供関数(provide API key function)を含むことができる。サービスクラスは、ライセンス情報を戻すように構成されたライセンス関数(license function)をさらに含むことができる。サービスクラスは、マップAPIのリリースに対するバージョンを戻すように構成されたバージョン関数(version function)を含むことができる。
【００４２】
(304)において、方法は、ビューコントローラの中でマップビュークラスをインスタンス化すること、およびそれをビュー階層に追加することを含むことができる。このことは、マーカーおよびポリラインが追加され得るマップを表示する結果になり得る。
【００４３】
(306)において、ナビゲーションAPIに関連するナビゲータクラスのナビゲータインスタンスが作成され得る。ナビゲータクラスに関する詳細は以下で提供される。次いで、ルートおよび進路変更ごとの方向が表示されて見つけられるように、ナビゲータがマップにバインドされ得る(308)。
【００４４】
次いで、ナビゲーションAPIを使用してナビゲーションサービスが実装され得る。たとえば、ルーティングエンジンから、たとえば、ナビゲーションルートが取得され得る(310)。ルートは、フェッチされているとマップ上で表示され得る。(312)においてナビゲーションモードに入ることができ、ここで、ユーザがルートに沿って移動するにつれて、カメラ変更および進路変更ごとの方向が表示される。ナビゲーションは、目的地に到達するかまたはナビゲーションモードから抜ける(314)まで継続することができる。
【００４５】
上記の方法の例示的な実装形態は次のように提供される。
/*
MyAppDelegate.mm
*/
- (BOOL) application :( UIApplication *) application
didFinishLaunchingWithOptions :( NSDictionary *) launchOptions {
[GMSServices provideAPIKey : kAPIKey];
}
/*
MyAppNavigationViewController.mm
*/
@interface MyAppNavigationViewController ()<
GMSNavigatorDelegate,
GMSUIControllerNavigationDelegate >
@end
@implementation MyNavigationViewController {
GMSMapView *_mapView;
GMSNavigator *_navigator;
}
- (void) loadView {
//マップを構築する。
_mapView = [GMSMapView mapWithFrame : CGRectZero];
_mapView.delegate = self;
self.view = _mapView;
//コールバックを用いてナビゲータを要求する。利用規約が表示される。
__weak typeof (self) *weakSelf = self;
[ GMSNavigationServices showTermsAndConditionsDialog :^(BOOL result) {
typeof (self) *strongSelf = weakSelf;
if (result && strongSelf) {
[self fetchNavigator]
} else {
//条項が拒絶された。ビューを抜ける。
}
}];
}
/*
共有されるナビゲータインスタンスをフェッチし、ナビゲーションマップおよびUIを構成する。
*/
- (void) fetchNavigator {
//ナビゲータを要求する。
_navigator = [[Navigator alloc] init];
_navigator.delegate = strongSelf;
//UI設定を構成する。
GMSUISettings *settings = _mapView.settings;
settings.navigation Header = NO;
settings.trafficIncidentCards = NO;
settings.delegate = self;
//マップの制御権を取る。
_mapView.navigator = _navigator;
}
/*
新たなジョブが受け取られると、目的地までのルートを示す。
*/
- (void) newJobIsAvailableToCoordinate :(CLLocationCoordinate2D) coordinate) {
GMSNavigationWaypoint *destination =
[[GMSNavigationWaypoint alloc] initWithCoordinate : coordinate];
[ _navigator setDestinationsWithWaypoints : @[destination]
options : [GMSRoutingOptions defaultOptions]
callback : ^(RouteStatus routeStatus) {
if (routeStatus == kRouteStatusOk) {
_mapView.cameraMode = kGMSNavigationCameraModeRouteOverview;
}
}];
}
/*
ナビゲーションモードに入る。
*/
- (void) acceptJobButtonWasPressed {
_navigator.guidanceEnabled = YES;
_mapView.cameraMode = kGMSNavigationCameraModeFollowing;
}
@end
【００４６】
図4は、本開示の例示的な実施形態による、ナビゲーションAPI130に関連する命令の例示的なセットのブロック図を示す。図示のように、ナビゲーションAPI130は、ナビゲーションサービスクラス402、UI設定クラス404、ナビゲータクラス410、およびナビゲータデリゲート440を含むことができる。API130は、他のクラス/プロトコル406を含むことができる。ナビゲーションサービスクラス402、UI設定クラス404、ナビゲータクラス410、およびナビゲータデリゲート440、ならびに例示的な実装形態において使用され得る他のクラス/プロトコルに関する詳細が、以下で提供される。
【００４７】
ナビゲーションサービスクラス402は、ナビゲーションAPI130用の汎用メソッドを公開することができる。ナビゲーションサービスクラス402は、ナビゲーションAPI130用のサービスクラスであり得る。ナビゲーションサービスクラス402は、ユーザが利用規約を受諾しているかどうかを戻す利用規約受諾済み関数(terms and conditions accepted function)と、ユーザがまだ受諾していない場合に利用規約を示す、必要な場合に利用規約を示す関数(show terms and conditions if needed function)と、ナビゲーションAPIに対するソフトウェアライセンス情報を戻すライセンス情報関数(license info function)とを含む、静的パブリックメンバ関数を含むことができる。ナビゲーションサービスクラス402の例示的な実装形態が、以下で提供される。
/**
*ユーザが利用規約を受諾または拒絶すると呼び出される。
*/
typedef void (^GMSTermsResponseCallback)(BOOL result);
/**
*ナビゲーションSDK用のユーティリティメソッドを提供する。
*/
@interface GMSNavigationServices : NSObject
/**
*ナビゲーションSDKを使用するための利用規約を含むダイアログを用いてユーザにプロンプトする。
*/
+ (void) showTermsAndConditionsDialogOnViewController :(UIViewController*)controller
callback :(GMSTermsResponseCallback) callback ;
/**
*利用規約がユーザによって受諾されているかどうかをチェックする。
*/
+ (BOOL) termsHaveBeenAccepted ;
/**
*iOS用のGoogleマップSDKに対するオープンソースソフトウェアライセンス情報を戻す。この情報は、あなたのアプリケーション内で利用可能にされなければならない。
*/
+ (NSString *) openSourceLicenseInfo ;
/**
*iOS用のGoogleナビゲーションSDKのこのリリースに対するバージョンを戻す。
*/
+ (NSString *) SDKVersion;
@end
【００４８】
ナビゲータクラス410は、ルートがマップとともに表示されること、ナビゲーションが開始または停止すること、カメラ角度変更などを可能にする、ナビゲーション機能性のコントローラであり得る。いくつかの実施形態では、ナビゲータクラス410は、ルートおよび進路変更ごとの方向が表示されるような、マップビュークラスのインスタンスを制御することができる。いくつかの実施形態では、ナビゲータクラス410は、ユーザインターフェースの中でいかなるマップも目に見えることなくナビゲーション更新(たとえば、ロケーション、ETA)を提供するために使用され得る。ナビゲータクラス410はシングルトンであり得る。いくつかの実施形態では、ナビゲータクラス410はサブクラスをサポートしない。すべてのメソッドは、メインスレッドから呼び出されることを必要とされ得る。
【００４９】
図5は、本開示の例示的な実施形態による例示的なナビゲータクラス410を示す。ナビゲータクラス410は、複数の関数を含むことができる。たとえば、ナビゲータクラス410は、ナビゲーションに対する複数の目的地を設定でき、かつ以前に設定されたいかなる目的地もオーバーライドできる、目的地設定コールバック関数(set destinations callback function)412を含むことができる。1つまたは複数の目的地までのルートが見つかると、okステータスを用いてコールバックが呼び出され得る。
【００５０】
ナビゲータクラス410は、目的地の現在のリストから最初の目的地をポップ(pop)できる、次の目的地まで継続関数(continue to next destination function)414を含むことができる。ナビゲータクラス410は、以前に設定されたすべての目的地をクリアでき、かつマップから計算されたいかなるルートも除去できる、目的地クリア関数(clear destinations function)416を含むことができる。ナビゲータクラス410は、所与の中間地点までの推定時間、または中間地点が現在のルートの一部でない場合には最大値を戻すことができる、中間地点までの時間関数(time to waypoint function)418を含むことができる。ナビゲータクラス410は、所与の中間地点までの推定距離、または中間地点が現在のルートの一部でない場合には最大値を戻すことができる、中間地点までの距離関数(distance to waypoint function)420を含むことができる。ナビゲータクラス410は、ナビゲータクラス410上で現在設定されているルートに沿って移動をシミュレートできる、既存ルートに沿ったロケーションシミュレート関数(simulate locations along existing route function)422を含むことができる。ナビゲータクラス410は、シミュレーションがアクティブである場合にシミュレーションを終了させることができる、シミュレーション停止関数(stop simulation function)424を含むことができる。
【００５１】
いくつかの実施形態では、ナビゲータクラス410は、複数のプロパティを含むことができる。いくつかのプロパティは、ナビゲータデリゲートプロトコルによって更新され得る。プロパティは、進路変更ごとの案内が現在有効化されているかどうかを提供できる案内アクティブプロパティ(guidance active property)426と、次の目的地までの推定時間を提供できる、次の目的地までの時間プロパティ(time to next destination property)428と、次の目的地までの推定距離を提供できる、次の目的地までの距離プロパティ(distance to next destination property)430と、行程の現在の区間を提供できる現在ルート区間プロパティ(current route leg property)432と、ルート区間のアレイを提供でき、各区間が設定された目的地に対応する、ルート区間プロパティ(route legs property)434と、交通状況および進路変更ごとの警告に対して音声案内が有効化されるべきかどうかを提供できる音声案内プロパティ(voice guidance property)436と、音声警告が再生されるときにデバイスが振動もすべきかどうかを決定できる振動有効化プロパティ(vibration enabled property)438とを含むことができる。
【００５２】
ナビゲータクラス410の例示的なインターフェースが、以下で提供される。
/**
*GMSRouteStatusは、ルート要求の結果を表すステータスコードである。
*/
typedef NS_ENUM (NSInteger, GMSRouteStatus) {
/**目的地までのルートが首尾よく計算された。*/
GMSRouteStatusOk = 1,
/**目的地までのルートが計算できなかった。*/
GMSRouteStatusNoRouteFound = 2,
/**ネットワークエラーのために、目的地までのルートが計算できなかった。*/
GMSRouteStatusNetworkError = 3,
/**不十分な割当てのために、目的地までのルートが計算できなかった。*/
GMSRouteStatusQuotaCheckFailed = 4,
/**提供された鍵がナビゲーションSDKを使用するための許可を有しないので、ルートが計算できなかった。*/
GMSRouteStatusAPIKeyNotAuthorized = 5,
/**ナビゲーションSDK利用規約がユーザによって受諾されていないので、ルートが計算できなかった。*/
GMSRouteStatusTermsAndConditionsNotAccepted = 6,
/**より新しいルートを優先して、ルート計算がキャンセルされた。*/
GMSRouteStatusCancelled = 7,
/**GPSロケーションがユーザによってオフにされたので、ルートが計算できなかった。*/
GMSRouteStatusLocationDisabled = 8,
};
/**
*ユーザのロケーションから、提供された目的地までのルートが、見つかるかまたはRouteStatusによって示される理由のために見つからないと、呼び出される。
*/
typedef void (^GMSRouteStatusCallback)(GMSRouteStatus routeStatus);
/**
*目的地までのルートを見つけること、ナビゲーションモードに入ること、および残りの距離やETAなどの情報を提供することによって、ナビゲーションセッションが、開始、制御、および監視されることを可能にする。ナビゲータはそのルート上のGMSMapViewを制御することができ、進路変更ごとの方向が表示される。
*
*このクラスはシングルトンであり、共有されるインスタンスは[Navigator sharedNavigator]メソッドを使用して取得されるべきである。
*/
@interface GMSNavigator : NSObject
/**
*共有されるGMSNavigatorインスタンスを提供し、必要ならばそれを作成する。このメソッドは、
*- [GMSServices provideAPIKey:<key>]を使用してAPI鍵がすでに提供されていること
*-  ナビゲーションSDK利用規約が表示および受諾されていること
の後にのみ呼び出されるべきである。
*
*  このメソッドは、これらの条件のうちのいずれかが満たされない場合、例外をスロー(throw)する。
*/
+ (instancetype) sharedNavigator;
+ (instancetype)init;
/**
*ナビゲーション状態の変化、たとえば、ロケーション更新、残り時間もしくは残り距離の変化、または計画されたルートの変化に起因して、ナビゲータからコールバックを受け取ることができる、デリゲートを設定する。
*/
@property(nonatomic, weak) id<GMSNavigatorDelegate> GMS_NULLABLE_PTR delegate;
/**
*ナビゲーションヘッダ、フッタ、およびコンパスなどのUI要素の外観を構成するためのメソッドを含むこのナビゲータに、GMSNavigationUISettingsへのアクセスを与える。
*/
@property (nonatomic, readonly) GMSNavigationUISettings *navigationUISettings;
/**
*didUpdateRemainingTimeOrDistanceデリゲートメソッドが呼び出される前に残りの行程時間がどのくらい変化しなければならないのかに対するしきい値を設定する。
*/
@property (nonatomic) NSTimeInterval timeChangedThreshold;
/**
*didUpdateRemainingTimeOrDistanceデリゲートメソッドが呼び出される前に残りの行程距離がどのくらい変化しなければならないのかに対するしきい値を設定する。
*/
@property (nonatomic) CLLocationDistance distanceChangedThreshold;
/**
*オーディオ案内(振動を含む)のタイプが有効化されることを設定する。デフォルトで、振動、音声、およびBluetooth(登録商標)を介した音声(利用可能な場合)が有効化される。
*/
@property (nonatomic) GMSAudioGuidance audioGuidance;
/**
*この案内セッションの間に(startGuidanceの最後の呼出しから)これまでに移動したルートを戻す。記録されるルートは、GMSNavigatorDelegateに提供されるような、かつ、たとえば、連続する共線的地点を単一の線分に変えて冗長な地点を除去するように簡略化された、道路がスナップされた(road-snapped)ロケーションからなる。
*/
@property (nonatomic, readonly, copy) GMSPath *GMS_NULLABLE_PTR travelledRoute;
/**
*行程の現在の区間。このRouteSegmentは、デバイスの直近の知られている(道路がスナップされた)位置のような、その開始位置を有する。
*/
@property (nonatomic, readonly, copy)
GMSRouteSegment *GMS_NULLABLE_PTR currentRouteSegment;
/**
*setDestinationsWithWaypoints:options:callbackによって設定された目的地に各セグメントが対応する、ルートセグメントのアレイ。
*/
@property (nonatomic, readonly, copy)
GMS_NSArrayOf (GMSRouteSegment *) *GMS_NULLABLE_PTR routeSegments;
/**
*現在の位置から現在の目的地までの推定時間および推定距離。
*/
@property (nonatomic, readonly, copy) GMSTimeAndDistance *GMS_NULLABLE_PTR
timeAndDistanceToNextDestination;
/**
*現在の位置から各目的地までの推定時間および推定距離を表す、現在のルートにおける各目的地に対応する時間および距離のアレイ。
*/
@property (nonatomic, readonly, copy)
GMS_NSArrayOf (GMSTimeAndDistance *) *GMS_NULLABLE_PTR
timesAndDistances;
/**
*提供されたマップを制御し、マップがあった場合には以前のマップを制御することをやめるようにナビゲータを設定する。これは、ユーザのロケーションに追従することをカメラに直ちに開始させる。ナビゲータが制御中にある間、マップ属性のうちのいくつかがオーバーライドされ、たとえば、mapTypeプロパティの現在の値にかかわらず、マップタイプが一時的にノーマルに変更される。
*
*ナビゲーションがすでに進行中である場合、進路変更ごとの方向と一緒に現在のルートが直ちに表示される。
*/
- (void) startControllingMap : (GMSMapView *) mapView;
/**
*現在GMSMapViewが設定されている場合、GMSNavigatorが現在のGMSMapViewを制御することをやめさせる。これはナビゲーションを停止しない。警告が生成され続け、ルート情報、たとえば、残りの距離が計算され続ける。
*
*これは、ナビゲーション中にオーバーライドされた任意のマップ属性に、現在のプロパティ値を再び考慮させる。たとえば、mapTypeがGMSTypeHybridに設定されている場合、ここでマップはハイブリッドモードでの表示に戻る。
*/
- (void) stopControllingMap;
/**
*以前に設定された任意の目的地をオーバーライドして、ナビゲーションに対する複数の目的地を設定する。
*
*ユーザのロケーションから所与の目的地までルートが見つかる場合、提供されるコールバックがGMSRouteStatusOkを用いて呼び出される。ルートが見つかる前に新たな目的地が設定される場合、要求はキャンセルされ、GMSRouteStatusCancelledを用いてコールバックが呼び出される。任意の他の理由のためにルートが見つけられない場合、適切なエラーステータスを用いてコールバックが呼び出される。
*/
- (void)
setDestinationsWithWaypoints : (GMS_NSArrayOf (GMSNavigationWaypoint *) *)
waypoints
options : (GMSRoutingOptions *) options
callback : (GMSRouteStatusCallback) callback;
/**
*現在の目的地を除去する。この呼出しに続いて、次の目的地に案内が向けられ、古い目的地についての情報は利用可能でない。
*
@return the waypoint guidanceは残された中間地点に向かいつつあるか、またはそれ以上の残された中間地点がない場合はnilである。
*/
- (GMSNavWaypoint *GMS_NULLABLE_PTR) continueToNextDestination;
/**
*以前に設定されたすべての目的地をクリアし、マップからの計算されたいかなるルートも除去する。ナビゲーションが実行中である場合、これはナビゲーションを自動的に停止する。
*/
- (void) clearDestinations;
/**
*目的地が設定されておりそれに対してルートが算出されている場合、そのルートに対して進路変更ごとのナビゲーション案内を開始する。ルートが算出されていない場合、ルートが算出されると進路変更ごとの案内が始まる。
*/
- (void) startGuidance;
/**
*進路変更ごとのナビゲーション案内を停止する。
*/
- (void) stopGuidance;
/**
*ユーザのロケーションに追従するようにカメラを設定する。これは通常、進路変更ごとの案内を開始して「傾斜した」運転ビューに入ると呼び出される。それはまた、showRouteOverview、またはGMSMapViewの手作業カメラセッターメソッド(manual camera setter method)の呼出しの後に続いて、カメラを再び有効化するために使用され得る。
*/
- (void) followMyLocationWithPerspective : (GMSNavigationCameraPerspective) perspective;
/**
*残りのルートの概要を示すようにマップをパンおよびズームする。これは、カメラがユーザの位置に追従することを一時的に妨げる。
*
*カメラの追従は、followMyLocationWithPerspectiveを使用して再び有効化され得る。
*/
- (void) showRouteOverview;
@end
【００５３】
図6を参照すると、ナビゲータデリゲートプロトコル440は、ナビゲータクラス410のデリゲートであり得る。ナビゲータデリゲート440は、複数の関数を含むことができる。たとえば、ナビゲータデリゲートは、ユーザのロケーションが更新されると呼び出され得るロケーション更新関数442を含むことができる。ナビゲータデリゲート440は、ユーザがナビゲーション中間地点に到着したときに呼び出され得る中間地点到着関数444を含むことができる。ナビゲータデリゲート440は、現在のルートが変更またはクリアされると呼び出され得るルート変更関数446を含むことができる。ナビゲータデリゲート440は、目的地までの推定時間が更新されると呼び出され得る残り時間更新関数448を含むことができる。ナビゲータデリゲート440は、目的地までの推定距離が更新されると呼び出され得る残り距離更新関数(update remaining distance function)450を含むことができる。ナビゲータデリゲート440は、残り時間更新関数448が呼び出されることをトリガする次の目的地までの推定時間の最小変化を指定する、ナビゲータ時間更新しきい値パラメータにアクセスすることができ、またはそれを指定することができる。ナビゲータデリゲート440は、残り距離更新関数450が呼び出されることをトリガする次の目的地までの推定距離の最小変化を指定する、ナビゲータ距離更新しきい値パラメータにアクセスすることができ、またはそれを指定することができる。
【００５４】
ナビゲータデリゲート440の例示的な実装形態は、以下の通りである。
@protocol GMSNavigatorDelegate <NSObject>
/**
*運転者の、道路がスナップされたロケーション/方位が更新されると呼び出される。これは、ナビゲーションエンジンによってできるだけ頻繁に提供される。
*/
- (void) navigator :(GMSNavigator *) navigator
didUpdateLocation :(CLLocation *) location;
/**
*運転者がGMSNavigationWaypointに到着したときに呼び出される。
*/
- (void) navigator :(GMSNavigator *) navigator
didArriveAtWaypoint :(GMSNavigationWaypoint *) waypoint;
/**
*ルートが変わると呼び出される。新たなルートはGMSNavigatorルートセグメントプロパティを通じて利用可能である。
*/
- (void) navigatorDidChangeRoute :(GMSNavigator *) navigator;
/**
*GMSNavigatorのtimeChangedThresholdSecondsおよびdistanceChangedThresholdMetersプロパティによって指定されたしきい値を超えることにより次の目的地までの時間または距離が変わると呼び出される。
*/
- (void) navigator :(GMSNavigator *) navigator
didUpdateRemainingTimeOrDistance : (GMSTimeAndDistance *) timeAndDistance;
@end
【００５５】
図4を参照すると、UI設定クラス404は、ナビゲーションAPI130に関連するUI設定を指定するために使用され得る。UI設定クラス404は、すべてのジェスチャーが有効化されるべきかそれとも無効化されるべきかに対する選好を設定する全ジェスチャー有効化設定関数(set all gestures enabled function)を含むことができる。UI設定クラスは、以下のプロパティ、すなわち、スクロールジェスチャーが有効化されるべきかそれとも無効化されるべきかを制御するスクロールジェスチャープロパティ(scroll gestures property)と、ズームジェスチャーが有効化されるべきかそれとも無効化されるべきかを制御するズームジェスチャープロパティ(zoom gestures property)と、傾斜ジェスチャーが有効化されるべきかそれとも無効化されるべきかを制御する傾斜ジェスチャープロパティ(tilt gestures property)と、回転ジェスチャーが有効化されるべきかそれとも無効化されるべきかを制御する回転ジェスチャープロパティ(rotate gestures property)と、ジェスチャーが有効化されるとユーザによるジェスチャーがマップビュークラスによって完全に消費されるかどうかを制御する、ビューの中のジェスチャー消費プロパティ(consumes gestures in view property)と、コンパスを有効化または無効化するコンパスボタンプロパティ(compass button property)と、ロケーションボタンを有効化または無効化するロケーションボタンプロパティ(location button property)と、屋内フロアピッカーを有効化または無効化する屋内ピッカープロパティ(indoor picker property)と、回転ジェスチャーおよびズームジェスチャーが、中心を外れてかつ周辺でスクロールされて実行され得るかどうかを制御する、回転またはズーム中のスクロールジェスチャー許容プロパティ(allow scroll gestures during rotate or zoom property)とを含むことができる。
【００５６】
UI設定クラスの例示的な実装形態が、以下で提供される。
/**
*ナビゲーションUIに対する異なるオプションが設定されることを可能にするコントローラ。
*/
@interface GMSNavigationUISettings : NSObject
/**
*UI関連イベントに対してGMSNavigationUISettingsインスタンスからコールバックを受け取ることができるデリゲートを設定する。
*/
@property (nonatomic, weak) id<GMSNavigationUISettingsDelegate>
GMS_NULLABLE_PTR delegate;
/**
*ナビゲーション中に進路変更ごとのナビゲーションヘッダが目に見えるかどうかを決定する。
*/
@property (nonatomic) BOOL header;
/**
*ナビゲーション中にETAカードが目に見えるかどうかを決定する。
*/
@property (nonatomic) BOOL etaCard;
/**
*ユーザが交通インシデントアイコンをクリックすると交通インシデントカードが示されるべきかどうかを決定する。
*/
@property (nonatomic) BOOL trafficIncidentCards;
/**
*交通プロンプトが示されるべきかどうかを決定する。交通プロンプトは、ナビゲーション中に交通におけるユーザの状態を更新するために周期的に出現する。
*/
@property (nonatomic) BOOL trafficPrompts;
@end
【００５７】
いくつかの実施形態では、ナビゲーションAPI130は、夜間モード未変更コールバック(did not change night mode callback)を含む、UI設定デリゲートを含むことができる。UI設定デリゲートの例示的な実装形態が、以下で提供される。
/**
*ナビゲーションUI要素がそこにあり得る様々なモード、たとえば、マップ外観、ヘッダ、およびフッタ、ならびにボタンを表す。
*/
typedef NS_ENUM (NSInteger, GMSNavigationUIMode) {
/**ナビゲーションUIは通常の日中モードにある。*/
GMSNavigationUINormal = 1,
/**ナビゲーションUIはもっと暗いUI様式を有する夜間モードにある*/
GMSNavigationUINight = 2,
};
/**
*ナビゲーションUIイベントに対するデリゲート。
*/
@protocol GMSNavigationUISettingsDelegate<NSObject>
@optional
/**
*ナビゲーションUIが夜間モードに入るかまたは夜間モードから抜けると呼び出される。
*/
- (void) navigationUISettings :(GMSNavigationUISettings *) navigationUISettings
didChangeUIMode :(GMSNavigationUIMode) mode;
@end
【００５８】
図4を参照すると、ナビゲーションAPI130は、他のクラスおよびプロトコル406を含むことができる。いくつかのクラス(たとえば、マップAPIに関連するクラス)は、ナビゲーションAPI130の態様によって制御され得るか、それによって起動され得るか、またはその中にラップされ得る。以下は、本開示の例示的な実施形態による、マップおよびナビゲーション機能性を有するAPIの例示的な実装形態とともに使用され得るクラスおよびプロトコルのリストである。
【００５９】
アドレスクラス(address class):アドレスクラスは、人間が読み取れる住所を含む、逆ジオコード要求からの結果であり得る。アドレスクラスは不変であり得、ジオコーダクラス(geocoder class)を介して取得され得る。フィールドはアドレスクラスの中でnilであってよい。アドレスクラスは、アドレスの第1の行を戻すアドレス行1関数(address line 1 function)と、アドレスの第2の行を戻すアドレス行2関数(address line 2 function)とを含む、パブリックメンバ関数を含むことができる。アドレスクラスは、以下のプロパティ、すなわち、ロケーションを提供する座標プロパティ(coordinate property)と、ストリートの番号および名称を提供する道路プロパティ(thoroughfare property)と、区域または都市を提供する区域プロパティ(locality property)と、区域、地区、または公園の細区分を提供する副区域プロパティ(sublocality property)とを含むことができる。
【００６０】
CALayerクラス:CALayerクラスは、APIの中のレイヤによって使用されるスーパークラスであり得る。CALayerクラスは、マップレイヤクラス(map layer class)およびパノラマレイヤクラス(panorama layer class)によって継承され得る。
【００６１】
カメラ位置クラス(camera position class):カメラ位置クラスは、すべてのカメラ位置パラメータを集約する不変クラスであり得る。カメラ位置クラスは、不定カメラ位置クラス(mutable camera position class)によって継承され得る。カメラ位置クラスは、指定されたイニシャライザである、ズーム、方位角、および視野角を伴うターゲット付き初期化関数(initialization with target function)と、特定のターゲットおよびズームレベルに対するカメラ位置クラスのためのコンビニエンスコンストラクタである、ズームを伴うターゲット付きカメラ関数(camera with target function)と、入力ズームを伴うターゲット付きカメラ関数による、カメラ位置クラスのためのコンビニエンスコンストラクタである、経度およびズームを伴う緯度付きカメラ関数(camera with latitude function)と、ズーム、方位角、および視野角の入力を有するターゲット付き初期化関数による、すべてのカメラプロパティ(camera property)を有するカメラ位置クラスのためのコンビニエンスコンストラクタである、ズーム、方位角、および視野角を伴うターゲット付きカメラ関数と、ズーム、方位角、および視野角を伴うターゲット付き初期化関数による、緯度、経度、およびすべての他のカメラプロパティを伴うカメラ位置クラスのためのコンビニエンスコンストラクタである、経度、ズーム、方位角、および視野角を伴う緯度付きカメラ関数と、地球上の所与の座標におけるそのメーター距離におけるズームレベルをゲットし、かつ指定された個数のスクリーンポイントに対応する所与のメーターおよび点を伴う、座標におけるズーム関数(zoom at coordinate function)とを含む、関数を含むことができる。カメラ位置クラスは、以下のプロパティ、すなわち、カメラがそこに向かって指し示す地球上のロケーションであるターゲットプロパティ(target property)と、ズームレベルであるズームプロパティ(zoom property)と、カメラの方位角を真北から時計回りの度単位で提供する方位角プロパティ(bearing property)と、(地球に直接面している)天頂からのカメラの度単位での角度を提供する視野角プロパティ(viewing angle property)とを含むことができる。
【００６２】
カメラ更新クラス(camera update class):カメラ更新クラスは、マップビュークラスに適用されてよい更新を表すことができる。カメラ更新クラスは、現在のカメラを修正するためのいくつかのロジックをカプセル化する。カメラ更新クラスは、マップ上でズームインするカメラ更新クラスを戻すズームイン関数(zoom in function)、マップ上でズームアウトするカメラ更新クラスを戻すズームアウト関数(zoom out function)、指定された量だけズームを変化させるカメラ更新クラスを戻すズームバイ関数(zoom by function)、指定された量にズームを設定するカメラ更新クラスを戻すズームツー関数(zoom to function)、カメラターゲットを指定された座標に設定するカメラ更新クラスを戻すターゲット設定関数(set target function)、カメラターゲットおよびズームを指定された値に設定するカメラ更新クラスを戻すターゲットズーム設定関数(set target zoom function)、カメラを指定されたカメラ位置クラスに設定するカメラ更新クラスを戻すカメラ設定関数(set camera function)、指定された境界が最大可能ズームレベルでスクリーン上の中央にあるようにカメラを変換するカメラ更新関数を戻す境界適合関数(fit bounds function)、境界適合関数と類似であるがビューのエッジからバウンディングボックスを挿入するためにAPIがパディングを指定することを許容するパディング付き境界適合関数(fit bounds with padding function)、境界適合関数と類似であるがビューのエッジからバウンディングボックスを挿入するためにエッジ挿入を指定することを許容するエッジ挿入付き境界適合関数(fit bounds with edge inserts function)、xおよびy方向において指定された個数の点だけビューの中心をシフトさせるカメラ更新クラスを戻すスクロールバイXおよびY関数(scroll by X and Y function)、ならびにスクリーン上で固定されたままの焦点を伴ってズームするカメラ更新クラスを戻すズームバイポイント関数(zoom by point function)などの、
静的パブリックメンバ関数を含むことができる。
【００６３】
円クラス(circle class):円クラスは、地球の表面(球形キャップ)上の円であり得る。円クラスは、オーバーレイクラス(overlay class)によって継承され得る。円クラスは、特定の位置および半径に対する円クラスのためのコンビニエンスコンストラクタである、位置および半径付き円関数(circle with position and radius function)を含むことができる。円クラスは、以下のプロパティ、すなわち、円の中心の地球上での位置を提供する位置プロパティ(position property)と、正でなければならないメートル単位で円の半径を提供する半径プロパティ(radius property)と、スクリーンポイントにおける円の輪郭の幅を提供するストローク幅プロパティ(stroke width property)と、円の輪郭の色を提供するストローク色プロパティ(stroke color property)と、円の内側がそれを用いてペイントされる色を提供する充填色プロパティ(fill color property)と、タイトル、すなわち、オーバーレイの短い説明を提供するタイトルプロパティ(title property)と、オーバーレイがオンであることをマップに提供するマッププロパティ(map property)と、オーバーレイがタップ通知を生起させるべきかどうかを提供するタップ可能プロパティ(tappable property)と、より大きいzインデックス値のオーバーレイがより小さいzインデックス値のタイルレイヤおよびオーバーレイの上部に描かれるという点で階層化系統を提供するzインデックスプロパティ(z index property)とを含むことができる。
【００６４】
座標境界クラス(coordinate bounds class):座標境界クラスは、地球の表面上の長方形のバウンディングボックスを表すことができる。座標境界クラスは不変であり得る。座標境界クラスは、2つの隅角部によって画定された長方形領域に対応する北東境界および南西境界を初期化する座標付き初期化関数(initialization with coordinate function)と、渡された座標を含むように現在の境界が拡張することを表す座標境界クラスを戻す座標包含関数(including coordinate function)と、全体を含むように拡張された現在の境界が他の境界によって画定されていることを表す座標境界クラスを戻す境界包含関数(including bounds function)と、渡された座標が座標境界クラス内にある場合にYESを戻す座標収容関数(contains coordinate function)と、渡された座標境界クラスが座標境界クラスとオーバラップする場合にYESを戻す境界交差クラス(intersects bounds class)と、領域を包囲する境界を用いて初期化する領域付き初期化関数(initialization with region function)と、経路を包囲する境界を用いて初期化する経路付き初期化関数(initialization with path function)と、現在の境界が経路を含むように拡張されていることを表す座標境界クラスを戻す経路包含関数(including path function)とを含む、関数を含むことができる。座標境界クラスは、以下のプロパティ、すなわち、境界の北東隅角部を提供する北東プロパティ(northeast property)と、境界の南西隅角部を提供する南西プロパティ(southwest property)と、境界が任意の点を含むかどうかを提供する有効プロパティ(valid property)とを含むことができる。
【００６５】
ジオコーダクラス:ジオコーダクラスは、地球座標(緯度および経度)をその座標の近くのアドレスの集合にマッピングする逆ジオコーディングのためのサービスを公開することができる。ジオコーダクラスは、地球の表面上のジオコード座標を逆にする逆ジオコード座標完了ハンドラ関数(reverse geocode coordinate completion handler function)と、ジオコーダクラスのためのコンビニエンスコンストラクタであるジオコーダ関数(geocoder function)とを含む、関数を含むことができる。
【００６６】
地上オーバーレイクラス(ground overlay class):地上オーバーレイクラスは、地球の表面上に存在する地上オーバーレイのための利用可能なオプションを指定することができる。地上オーバーレイの位置は明示的に指定され得、カメラに直面しなくてよい。地上オーバーレイクラスは、(以下で説明するように)オーバーレイクラスを継承することができる。地上オーバーレイクラスは、特定の境界およびアイコンに対する地上オーバーレイクラスのためのコンビニエンスコンストラクタである、境界およびアイコン付き地上オーバーレイ関数(ground overlay with bounds and icon function)と、画像の実際のサイズがズームレベルにおけるカメラピクセルに整合するかのように、位置において所与のアイコンをレンダリングする地上オーバーレイクラスを構築する、位置およびアイコンおよびズームレベル付き地上オーバーレイ関数(ground overlay with position and icon and zoom level function)とを含む、関数を含むことができる。地上オーバーレイクラスは、以下のプロパティ、すなわち、この地上オーバーレイクラスの位置、より詳細には、そのアンカーの物理的位置を提供する位置プロパティと、どこで地上オーバーレイクラスが境界に対して地球にアンカリングされているのかを指定するアンカープロパティ(anchor property)と、地球上の境界内でレンダリングすべきアイコンを提供するアイコンプロパティ(icon property)と、地上オーバーレイの不透明度を0(完全に透明)と1(デフォルト)との間(両端値を含む)で提供する不透明度プロパティ(opacity property)と、地上オーバーレイの方位角を度単位で提供する方位角プロパティと、アイコンが描かれるという点で地球上の2次元境界を提供する境界プロパティ(bounds property)と、タイトル、すなわち、オーバーレイの短い説明を提供するタイトルプロパティと、このオーバーレイがオンであることをマップに提供するマッププロパティと、オーバーレイがタップ通知を生起させるべきかどうかを提供するタップ可能プロパティと、より大きいzインデックス値のオーバーレイがより小さいzインデックス値のタイルレイヤおよびオーバーレイの上部に描かれるという点で階層化系統を提供するzインデックスプロパティとを含むことができる。
【００６７】
屋内建物クラス(indoor building class):屋内建物クラスは、レベルを含む建物を記述することができる。屋内建物クラスは、以下のプロパティ、すなわち、建物を構成するレベルを記述する屋内レベルクラス(indoor level class)のアレイを提供するレベルプロパティ(levels property)と、デフォルトレベルのレベルアレイの中にインデックスを提供するデフォルトレベルインデックスプロパティ(default level index property)と、建物が全体に地下にあり、非表示にされることをサポートするかどうかを提供する、地下プロパティ(underground property)とを含むことができる。
【００６８】
屋内表示クラス(indoor display class):屋内表示クラスは、屋内レベルデータの表示を観測または制御するための能力を提供することができる。屋内表示クラスは、以下のプロパティ、すなわち、屋内表示クラスデリゲートを提供するデリゲートプロパティ(delegate property)と、現在焦点の合った建物を提供し、現在焦点を受けている屋内データを有する建物がない場合にはnilである、アクティブ建物プロパティ(active building property)と、アクティブな建物に対するアクティブなレベルを提供および制御するアクティブレベルプロパティ(active level property)とを含んでよい。
【００６９】
屋内表示デリゲートクラス(indoor display delegate class):屋内表示デリゲートクラスは、屋内表示クラス上でのイベントに対するデリゲートであり得る。屋内表示デリゲートクラスは、アクティブな建物が変更されると提起されるアクティブ建物変更関数(change active building function)、およびアクティブなレベルが変更されると提起されるアクティブレベル変更関数(change active level function)などの、関数を含むことができる。
【００７０】
屋内レベルクラス:屋内レベルクラスは、建物の中の単一のレベルを記述することができる。複数の建物がレベルを共有することができ、その場合、レベル番号および/またはレベル名称が異なることがあっても、レベルインスタンスは等しいものとして匹敵する。屋内レベルクラスは、以下のプロパティ、すなわち、レベルに対する局所化された表示名称を提供するネームプロパティ(name property)と、レベルに対する局所化された短い表示名称を提供するショートネームプロパティ(short name property)とを含むことができる。
【００７１】
マップレイヤクラス:マップレイヤクラスは、マップビュークラス上のレイヤクラスとして提供される、CALayerクラスのカスタムサブクラスであり得る。マップレイヤクラスは、CALayerクラスを継承することができる。
【００７２】
マップビュークラス:マップビュークラスは、マップAPIの主要なクラスであるものと見なされ得、マップに関係するすべての関数に対するエントリポイントであり得る。マップビュークラスは、通常、コンビニエンスコンストラクタを使用してインスタンス化されるが、デフォルト関数を用いて作成されてもよく、カメラはデフォルトのロケーションに設定される。マップビュークラスは、そのレンダラをパワーアップするようにマップに告げるレンダリング開始関数(start rendering function)と、そのレンダラをパワーダウンするようにマップに告げるレンダリング停止関数(stop rendering function)と、マーカーおよびポリラインならびに地上オーバーレイを含む、マップに追加されているすべてのマークアップをクリアする、クリア関数(clear function)と、最大および最小ズームを設定する、最小および最大ズーム設定関数(set min and max zoom function)と、パディングを有する境界を提示するカメラ位置クラスを構築する境界挿入用カメラ関数(camera for bounds insets function)と、カメラ更新クラスに従ってカメラを変更するカメラ移動関数(move camera function)と、内部的に使用される精度および変換のレベルを考慮に入れることによって、所与のカメラ位置が実際にカメラに同様にレンダリングさせることになるかどうかをチェックする、均等レンダリング位置クラス(equal rendering position class)と、マップのカメラをカメラ位置クラスにアニメーション化する、カメラ位置へのアニメーション化関数(animate to camera position function)と、カメラ位置へのアニメーション化関数と類似であるがカメラのロケーションしか変更しない、ロケーションへのアニメーション化クラス(animate to location class)と、カメラ位置へのアニメーション化関数と類似であるがカメラのズームレベルしか変更しない、ズームへのアニメーション化関数(animate to zoom function)と、カメラ位置へのアニメーション化関数と類似であるがカメラの方位角しか変更しない、方位角へのアニメーション化関数(animate to bearing function)と、カメラ位置へのアニメーション化関数と類似であるがカメラの視野角しか変更しない、視野角へのアニメーション化関数(animate to viewing angle function)と、現在のカメラにカメラ更新クラスを適用し、次いでカメラ位置へのアニメーション化関数における結果を使用する、カメラ更新付きアニメーション化関数(animate with camera update function)と、フレームおよびカメラターゲットを有するマップビュークラスを構築しそれを戻す、フレームおよびカメラ付きマップ関数(map with frame and camera function)とを含む、関数を含むことができる。マップビュークラスは、以下のプロパティ、すなわち、マップビュークラスデリゲートを提供するデリゲートプロパティと、カメラを制御するとともにマップがどのように定位されているのかを規定するカメラプロパティと、スクリーン座標と緯度/経度座標との間で変換できる投影クラスオブジェクトを戻す投影プロパティ(projection property)と、ロケーションドットおよび確度円が有効化されているかどうかを制御するロケーション有効化プロパティ(location enabled property)と、ロケーションが有効化されている場合にユーザロケーションドットが描かれているかどうかを明らかにするロケーションパラメータ(location parameter)と、選択されているマーカーを提供す��被選択マーカープロパティ(selected marker property)と、利用可能な交通データをマップが描いているかどうかを制御する交通有効化プロパティ(traffic enabled property)と、表示されるべきマップタイルのタイプを制御するマップタイププロパティ(map type property)と、マップのスタイルを制御するマップスタイルプロパティ(map style property)と、カメラが最も遠くにズームアウトされ得ることを提供する最小ズームプロパティ(min zoom property)と、カメラが地球まで最も近くにあり得ることを提供する最大ズームプロパティ(max zoom 
property)と、利用可能な場合に3次元建物を示すべきかどうかを提供する建物有効化プロパティ(buildings enabled property)と、利用可能な場合に屋内マップが示されるかどうかを提供する屋内有効化プロパティ(indoor enabled property)と、屋内データ表示の様相を観測または制御することを可能にする屋内表示クラスインスタンスを提供する屋内表示プロパティ(indoor display property)と、ユーザインターフェース設定を制御するUI設定クラスオブジェクトをマップに提供する設定プロパティ(setting property)と、ビューの可視領域を制御するパディングプロパティ(padding property)と、アクセシビリティ要素を示すべきかどうかを提供するアクセシビリティ要素非表示プロパティ(accessibility elements hidden property)と、レイヤのために使用されるカスタムCALayerタイプに対するアクセサを提供するレイヤプロパティ(layer property)と、レンダリングフレームレートを制御する好適フレームレートプロパティ(preferred frame rate property)と、このマップに対してナビゲーション機能性が有効化されるかどうかを提供するナビゲーション有効化プロパティ(navigation enabled property)と、ルートが要求されることおよび進路変更ごとの案内が開始されることを可能にするマップビュークラスにナビゲータを提供するナビゲータプロパティ(navigator property)と、ナビゲーションが有効化されている場合にカメラのモードを変更するカメラモードプロパティ(camera mode property)と、ユーザのロケーションに追従するときに使用されるカメラ観点を提供する観点追従プロパティ(following perspective property)とを含むことができる。
【００７３】
マップビューデリゲートクラス(map view delegate class):マップビューデリゲートクラスは、マップビュークラス上でのイベントに対するデリゲートであり得る。マップビューデリゲートクラスは、ジェスチャーもしくはアニメーションに起因して、またはカメラもしくはレイヤ上の長さが0のアニメーションを介して明示的に更新されることによって、マップ上のカメラが変更される前に呼び出される、マップビュー移動予定関数(map view will move function)と、マップ上の任意のアニメーションもしくはジェスチャーの間に繰り返して、またはカメラが明示的に設定される場合には一度だけ呼び出され得る、マップビューカメラ位置変更済み関数(map view did change camera position function)と、任意の未処理のジェスチャーもしくはアニメーションが完了した後、またはカメラが明示的に設定された後、マップがアイドルになると呼び出される、カメラ位置におけるマップビューアイドル関数(map view idle at camera position function)と、マーカーがタップされなかった場合、特定の座標におけるタップジェスチャーの後に呼び出され得る、座標におけるマップビュータップ済み関数(map view did tap at coordinate function)と、特定の座標における長押しジェスチャーの後に呼び出され得る、座標におけるマップビュー長押し済み関数(map view did long press at coordinate function)と、マーカーがタップされた後に呼び出され得る、マップビューマーカータップ済み関数(map view did tap marker function)と、マーカーに関連する情報ウィンドウがタップされた後に呼び出され得る、マップビューマーカー情報ウィンドウタップ済み関数(map view did tap info window of marker function)と、マーカーの情報ウィンドウが長押しされた後に呼び出され得る、マップビューマーカー情報ウィンドウ長押し済み関数(map view did long press info window of marker function)と、オーバーレイがタップされた後に呼び出され得る、マップビューオーバーレイタップ済み関数(map view did tap overlay function)と、対象の点がタップされた後に呼び出され得る、マップビューPOIタップ済み関数(map view did tap POI function)と、関数がUIビューを戻す場合、そのマーカー用に使用するための随意のカスタム情報ウィンドウを提供するマーカーがもうすぐ選択済みになるときに呼び出され得る、マップビューマーカー情報ウィンドウ関数(map view marker info window function)と、マップビューマーカー情報ウィンドウ関数がnilを戻すと呼び出され得る、マップビューマーカー情報コンテンツ関数(map view marker info contents function)と、マーカーに関連する情報ウィンドウがクローズされると呼び出され得る、マップビューマーカー情報ウィンドウクローズ済み関数(map view did close info window of marker function)と、マーカー上でドラッギングが開始されたときに呼び出され得る、マップビューマーカードラッギング開始済み関数(map view did begin dragging marker function)と、マーカーのドラッギングが終了したときに呼び出され得る、マップビューマーカードラッギング終了済み関数(map view did end dragging marker function)と、マーカーがドラッグ中であるときに呼び出され得る、マップビューマーカードラッグ済み関数(map view did drag marker function)と、ロケーションボタンがタップされると呼び出され得る、マップビューに対するマイロケーションボタンタップ済み関数(did tap my location button for map view function)と、タイルが要求されておりレンダリングが開始されているときに呼び出され得る、マップビュータイルレンダリング開始済み関数(map view did start tile rendering function)と、すべてのタイルがロードしているかまたは永続的に失敗しており、かつラベルがレンダリングしているときに呼び出され得る、マップビュータイルレンダリング完了済み関数(map view did finish tile rendering function)と、マップが安定であり、すべてのタイルがロードしており、すべてのラベルがレンダリングしており、カメラがアイドルであり、すべてのオーバーレイオブジェクトがレンダリングされているときに呼び出される、マップビュースナップショットレディ関数(map view snapshot ready function)とを含む、関数を含むことができる。
【００７４】
マーカークラス(marker class):マーカークラスは、マップの表面上の特定の点において配置されたアイコンであり得る。マーカークラスのアイコンは、マップの表面ではなく観察デバイスのスクリーンに対して定位されて描かれ、すなわち、必ずしもマップ回転、マップ傾斜、またはマップズームに起因して定位を変えるとは限らない。マーカークラスは、オーバーレイクラスを継承することができる。マーカークラスは、デフォルトマーカーのためのコンビニエンスコンストラクタであり得る、位置付きマーカークラス(marker with position class)と、アイコンとして使用するためにデフォルトマーカー画像の色付きバージョンを作成できる、色付きマーカー画像クラス(marker image with color class)とを含む、関数を含むことができる。マーカークラスは、以下のプロパティ、すなわち、マーカー位置を提供する位置プロパティと、選択されると情報ウィンドウの中でタイトルの下方に示され得るスニペットテキストを提供するスニペットプロパティ(snippet property)と、レンダリングすべきマーカーアイコンを提供するアイコンプロパティと、レンダリングすべきマーカービューを提供するアイコンビュープロパティ(icon view property)と、このマーカー用のアイコンがフレームごとに描き直されるべきかどうかを制御するビュー変更追跡プロパティ(tracks view changes property)と、マーカー用の情報ウィンドウがフレームごとに描き直されるべきかどうかを制御する情報ウィンドウ変更追跡プロパティ(tracks info window changes property)と、地球の表面上のマーカーの位置にアンカリングされる、アイコン画像の中の点を指定する地上アンカーを提供する、地上アンカープロパティ(ground anchor property)と、点のすぐ上に表示され得る情報ウィンドウをそこにアンカリングすべき、アイコン画像の中の点を指定する、情報ウィンドウアンカープロパティ(info window anchor property)と、マーカーがマップビュークラス上で配置されるときに使用されるアニメーションを制御するアニメーション出現プロパティ(appear animation property)と、マーカーが対話式にドラッグされ得るかどうかを制御するドラッグ可能プロパティ(draggable property)と、マーカーが地球の表面またはカメラに直面する看板に対して平坦であるべきかどうかを制御する平坦プロパティ(flat property)と、マーカーの回転をマーカーのアンカーポイントを中心とする時計回りの度単位で提供する回転プロパティ(rotation property)と、完全に透明である0またはデフォルトである1の間(両端値を含む)でマーカーの不透明度を提供する不透明度プロパティと、マーカーデータを提供するユーザデータプロパティ(user data property)と、マーカークラスに対するコアアニメーションレイヤを提供するレイヤプロパティと、パノラマビューがマーカーを示そうと試みることを提供するパノラマビュープロパティ(panorama view property)と、タイトル、すなわち、オーバーレイの短い説明を提供するタイトルプロパティと、このオーバーレイがオンであることをマップに提供するマッププロパティと、オーバーレイがタップ通知を生起させるべきかどうかを提供するタップ可能プロパティと、より大きいzインデックス値のオーバーレイがより小さいzインデックス値のタイルレイヤおよびオーバーレイの上部に描かれるという点で階層化系統を提供するzイ��デックスプロパティとを含むことができる。
【００７５】
マーカーレイヤクラス(marker layer class):マーカーレイヤクラスは、その関連するマーカークラスのいくつかのプロパティのアニメーションを可能にする、マーカーごとに利用可能なCALayerのカスタムサブクラスであり得る。マーカーレイヤクラスは、以下のプロパティ、すなわち、マーカークラス上の位置の緯度部分を提供する緯度プロパティ(latitude property)と、マーカークラス上の位置の経度部分を提供する経度プロパティ(longitude property)と、マーカークラスによる回転を提供する回転プロパティと、マーカークラスによる不透明度を提供する不透明度パラメータとを含むことができる。
【００７６】
不定カメラ位置クラス:不定カメラクラス(mutable camera class)は、カメラ位置クラスを継承できる、カメラ位置クラスの不定バージョンであり得る。不定カメラ位置クラスは、指定されたイニシャライザである、ズーム、方位角、および視野角を伴うターゲット付き初期化関数と、特定のターゲットおよびズームレベルに対する不定カメラ位置クラスのためのコンビニエンスコンストラクタである、ズームを伴うターゲット付きカメラ関数と、入力ズームを伴うターゲット付きカメラ関数による、不定カメラ位置クラスのためのコンビニエンスコンストラクタである、経度およびズームを伴う緯度付きカメラ関数と、ズーム、方位角、および視野角の入力を伴うターゲット付き初期化関数による、すべてのカメラプロパティを伴う不定カメラ位置クラスのためのコンビニエンスコンストラクタである、ズーム、方位角、および視野角を伴うターゲット付きカメラ関数と、ズーム、方位角、および視野角を伴うターゲット付き初期化関数による、緯度、経度、およびすべての他のカメラプロパティを伴う不定カメラ位置クラスのためのコンビニエンスコンストラクタである、経度、ズーム、方位角、および視野角を伴う緯度付きカメラ関数と、地球上の所与の座標におけるそのメーター距離におけるズームレベルをゲットし、かつ指定された個数のスクリーンポイントに対応する、所与のメーターおよび点を伴う座標におけるズーム関数とを含む、関数を含むことができる。不定カメラ位置クラスは、以下のプロパティ、すなわち、カメラがそこに向かって指し示す地球上のロケーションであるターゲットプロパティと、ズームレベルであるズームプロパティと、カメラの方位角を真北から時計回りの度単位で提供する方位角プロパティと、(地球に直接面している)天頂からのカメラの度単位での角度を提供する視野角プロパティとを含むことができる。
【００７７】
不定経路クラス(mutable path class):不定経路クラスは、すべての座標が通常は有効であるという点で、位置座標の動的アレイであり得る。不定経路クラスは、その経路クラス(path class)を継承できる、不変経路クラス(immutable path class)(以下で説明する)の不定の相対物であり得る。不定経路クラスは、経路の末尾において座標を追加する座標追加関数(add coordinate function)と、所与の緯度および経度を有する新たなロケーションを追加する、緯度および経度追加関数(add latitude and longitude function)と、所与のインデックスにおいて座標を挿入する、インデックスにおける座標挿入関数(insert coordinate at index function)と、所与のインデックスにおける座標を所与の座標と置換する、座標とのインデックスにおける座標置換関数(replace coordinate at index with coordinate function)と、インデックスにおけるエントリを除去する、インデックスにおける座標除去関数(remove coordinate at index function)と、経路の最終座標を除去する最終座標除去関数(remove last coordinate function)と、経路におけるすべての座標を除去する全座標除去関数(remove all coordinates function)と、新たに割り振られた経路を別の経路のコンテンツを用いて初期化する経路付き初期化関数と、経路のサイズをゲットする計数関数(count function)と、それが有効である場合に所与のインデックスにおけるロケーションを戻す、インデックスにおける座標関数(coordinate at index function)と、経路の符号化ストリングを戻す符号化経路関数(encoded path function)と、現在の経路の各座標に所与の緯度および経度を追加することによって取得された新たな経路を戻す、緯度および経度による経路オフセット関数(path offset by latitude and longitude function)と、種類に従って解釈される長さに対応する、経路に沿った分数個のセグメントを戻す、長さおよび種類に対するセグメント関数(segment for length and kind function)と、種類に従って経路長を戻す種類長関数(length of kind function)と、中身のない経路のためのコンビニエンスコンストラクタである経路関数(path function)と、符号化経路から新たに割り振られた経路を初期化する、符号化経路からの経路関数(path from encoded path function)とを含む、パブリックメンバ関数を含むことができる。
【００７８】
ナビゲーション中間地点クラス:ナビゲーション中間地点クラスは、ナビゲーション目的地を指定するために使用される不変中間地点クラス(immutable waypoint class)であり得る。ナビゲーション中間地点クラスは、概して、ロケーションまたは識別番号から初期化され得、そのため、指定された2つのイニシャライザを有する。ナビゲーション中間地点クラスは、ロケーションおよびタイトルを伴うイニシャライザ、ならびに配置IDおよびタイトルを伴うイニシャライザを含む、パブリックメンバ関数を含むことができる。ナビゲーション中間地点クラスはまた、中間地点の名称を提供するタイトルプロパティを含むことができる。
【００７９】
定位クラス(orientation class):  定位クラスは、パノラマカメラクラス(panorama camera class)の観察方向を制御するために使用される方位およびピッチのタプルであり得る。定位クラスは、方位、すなわち、度単位での水平角、およびピッチ、すなわち、水平線からの度単位での垂直角のような、パブリック属性を含んでよい。
【００８０】
オーバーレイクラス:オーバーレイクラスは、特定のマップビュークラスに取り付けられ得るいくつかのオーバーレイを表す抽象クラスであり得る。オーバーレイクラスは、直接インスタンス化されないことがあり、代わりに、具象オーバーレイタイプのインスタンスが、通常、直接作成される。オーバーレイクラスは、オーバーレイタイプのコピーを戻すことがあるコピープロトコルをサポートしてよく、ただしnilマップを伴う。オーバーレイクラスは、円クラス、地上オーバーレイクラス、マーカークラス、ポリゴンクラス(polygon class)、およびポリラインクラス(polyline class)によって継承されてよい。オーバーレイクラスは、以下のプロパティ、すなわち、タイトル、すなわち、オーバーレイの短い説明を提供するタイトルプロパティと、このオーバーレイがオンであることをマップに提供するマッププロパティと、オーバーレイがタップ通知を生起させるべきかどうかを提供するタップ可能プロパティと、より大きいzインデックス値のオーバーレイがより小さいzインデックス値のタイルレイヤおよびオーバーレイの上部に描かれるという点で階層化系統を提供するzインデックスプロパティとを含んでよい。
【００８１】
パノラマクラス(panorama class):パノラマクラスは、地球上の特定のパノラマ用のメタデータを表すことができる。パノラマクラスは、以下のプロパティ、すなわち、パノラマの精密なロケーションを提供する座標プロパティと、パノラマのIDを提供するパノラマIDと、近接するパノラマを記述するパノラマリンククラス(panorama link class)のアレイを提供するリンクプロパティ(links property)とを含んでよい。
【００８２】
パノラマカメラクラス:パノラマカメラクラスは、パノラマビュークラス(panorama view class)の観察方向を制御するために使用され得る。パノラマカメラクラスは、定位、ズーム、および視野を伴う初期化関数(initialization function)と、定位プラスズームおよびデフォルト視野の一部として方位およびピッチを指定するコンビニエンスコンストラクタである、定位およびズーム付きカメラ関数(camera with orientation and zoom function)と、デフォルト視野を用いて方位およびピッチおよびズームを指定するコンビニエンスコンストラクタである、方位ピッチおよびズーム付きカメラ関数(camera with heading pitch and zoom function)と、定位の一部として方位およびピッチを用いてすべてのカメラプロパティを指定するパノラマカメラクラスのためのコンビニエンスコンストラクタである、定位ズームおよび視野付きカメラ関数(camera with orientation zoom and field of view function)と、すべてのカメラプロパティを指定するパノラマカメラクラスのためのコンビニエンスコンストラクタである、方位ピッチズームおよび視野付きカメラ関数(camera with heading pitch zoom and field of view function)とを含む、関数を含むことができる。パノラマカメラクラスは、以下のプロパティ、すなわち、より大きい寸法のビューによって包囲される視野を、ズーム1における度単位で提供するFOV(視野)プロパティと、スクリーンの可視領域を調整することを行うズームプロパティと、方位およびピッチを一緒にグループ化するカメラ定位を提供する定位プロパティ(orientation property)とを含むことができる。
【００８３】
パノラマカメラ更新クラス(panorama camera update class):パノラマカメラ更新クラスは、現在のカメラを修正するためのいくつかのロジックをカプセル化するパノラマビュークラスに適用されてよい更新を表すことができる。パノラマカメラ更新クラスは、カメラ方位を増大させる更新を戻すローテートバイ関数(rotate by function)と、カメラ方位を所与の値に設定する更新を戻す方位設定関数(set heading function)と、カメラピッチを所与の値に設定する更新を戻すピッチ設定関数(set pitch function)と、カメラズームを所与の値に設定する更新を戻すズーム設定関数(set zoom function)とを含む、関数を含んでよい。
【００８４】
パノラマレイヤクラス:パノラマレイヤクラスは、パノラマビュークラス上のレイヤクラスとして提供される、CALayerのカスタムサブクラスであり得る。パノラマレイヤクラスは、CALayerクラスを継承することができる。パノラマレイヤクラスは、カメラ方位、カメラピッチ、カメラズーム、およびカメラFOVなどのプロパティを含んでよい。
【００８５】
パノラマリンククラス:パノラマリンククラスは、パノラマクラスから、近接するパノラマまでをリンクさせることができる。パノラマリンククラスは、以下のプロパティ、すなわち、通常は北からの時計回りでの近接するパノラマの角度を度単位で提供する方位プロパティ(heading property)と、近接するパノラマに対するパノラマIDを提供するパノラマIDプロパティ(panorama ID property)とを含むことができる。
【００８６】
パノラマサービスクラス(panorama service class):パノラマサービスクラスは、パノラマビューがアクティブでないときであってもパノラマメタデータを要求するために使用され得る。パノラマサービスクラスは、所与の座標の近くのパノラマについての情報を取り出す座標近傍パノラマ要求関数(request panorama near coordinate function)と、座標近傍パノラマ要求関数と類似であるが座標の周辺の探索半径を指定することを可能にする半径付き座標近傍パノラマ要求関数(request panorama near coordinate with radius function)と、所与のIDを有するパノラマについての情報を取り出すID付きパノラマ要求関数(request panorama with ID function)とを含む、パブリックメンバ関数を含むことができる。
【００８７】
パノラマビュークラス:パノラマビュークラスは、ストリートビュー画像を表示するために使用され得る。パノラマビュークラスは、すべてのジェスチャーが有効化されるべきかそれとも無効化されるべきかに対する選好を設定する全ジェスチャー有効化設定関数と、持続時間にわたってカメラをロケーションにアニメーション化する、カメラへのアニメーション化関数(animate to camera function)と、指定された持続時間にわたってカメラ更新クラスに従ってカメラを修正するカメラ更新関数(update camera function)と、座標近くのパノラマを要求する座標近傍移動関数(move near coordinate function)と、座標近傍移動関数と類似であるが座標の周囲の探索半径を指定することを可能にする、半径を伴う座標近傍移動関数と、現在ビューに対して定位が指し示すスクリーンポイントを戻す、定位に対する点関数(point for orientation function)と、ビューに対する点が与えられたスクリーンロケーションを通じて指し示す現在のカメラ定位を戻す、点に対する定位関数(orientation for point function)と、座標近くのパノラマを探索および表示する、フレーム付きパノラマコンビニエンスコンストラクタ(panorama with frame convenience constructor)と、フレーム付きパノラマコンビニエンスコンストラクタと類似であるが座標の周囲の探索半径を指定することを可能にする、フレームおよび半径付きパノラマコンビニエンスコンストラクタ(panorama with frame and radius convenience constructor)とを含む、関数を含むことができる。パノラマビュークラスは、以下のプロパティ、すなわち、パノラマ表示を提供し、パノラマプロパティ(panorama property)を設定することが新たなパノラマに遷移する、パノラマプロパティと、パノラマビューに対するデリゲートを提供するデリゲートプロパティと、定位ジェスチャーが有効化されるべきかそれとも無効化されるべきかを制御する定位ジェスチャープロパティ(orientation gestures property)と、ズームジェスチ
ャーが有効化されるべきかそれとも無効化されるべきかを制御するズームジェスチャープロパティと、ナビゲーションジェスチャーが有効化されるべきかそれとも無効化されるべきかを制御するナビゲーションジェスチャープロパティ(navigation gestures property)と、タップ可能なナビゲーションリンクが非表示にされるのかそれとも目に見えるのかを制御するナビゲーションリンク非表示プロパティ(navigation links hidden property)と、ストリートネームオーバーレイが非表示にされるのかそれとも目に見えるのかを制御するストリートネーム非表示プロパティ(street names hidden property)と、パノラマのカメラを制御するカメラプロパティと、レイヤのために使用されるカスタムCALayerタイプに対するアクセサを提供するレイヤプロパティとを含むことができる。
【００８８】
パノラマビューデリゲートクラス(panorama view delegate class):パノラマビューデリゲートクラスは、パノラマビュークラス上でのイベントに対するデリゲートであり得る。パノラマビューデリゲートクラスは、別のパノラマへの移動を開始すると呼び出されるパノラマ移動予定ID関数(will move to panorama ID function)と、view.panoramaプロパティが変化するたびに起動されるパノラマ移動済み関数(did move to panorama function)と、座標近傍パノラマ移動関数(move to panorama near coordinate function)を起動することによってパノラマ変更が引き起こされたときに呼び出される座標近傍パノラマ移動済み関数(did move to panorama near coordinate function)と、座標近傍移動関数がエラーを生成すると呼び出される座標近傍移動エラー関数(error on move near coordinate function)と、パノラマ移動ID関数(move to panorama ID function)がエラーを生成すると呼び出されるパノラマ移動エラーID関数(error on move to panorama ID function)と、カメラの変更中に繰り返して呼び出されるカメラ移動済み関数(did move camera function)と、ユーザがパノラマビュー上をタップしているがこのタップが消費されなかったときに呼び出されるタップ済み関数(did tap function)(タップは、たとえば、ナビゲーション矢印をタップすることによって消費されてよい)と、マーカーがタップされた後に呼び出されるマーカータップ済み関数(did tap marker function)と、現在ビューに対するパノラマタイルがちょうど要求されておりロードし始めるときに呼び出されるレンダリング開始済み関数(did start rendering function)と、タイルがスクリーン上でロードおよびレンダリングされているか、または永続的にロードに失敗すると呼び出される、レンダリング完了済み関数(did finish rendering function)とを含む、関数を含むことができる。
【００８９】
経路クラス:経路クラスは、2次元座標の不変アレイをカプセル化することができ、したがって、不変経路クラスである。経路クラスは、不定経路クラスによって継承され得る。経路クラスは、新たに割り振られた経路を別の経路クラスのコンテンツを用いて初期化する初期化関数と、経路のサイズをゲットする計数関数と、それが有効である場合に所与のインデックスにおけるロケーションを戻す、インデックスにおける座標関数と、経路の符号化ストリングを戻す符号化経路関数と、現在の経路の各座標に所与の緯度および経度を追加することによって取得された新たな経路を戻す、緯度および経度による経路オフセット関数と、種類に従って解釈される長さに対応する、経路に沿った分数個のセグメントを戻す、長さおよび種類に対するセグメント関数と、種類に従って経路長を戻す種類長関数と、中身のない経路のためのコンビニエンスコンストラクタである経路関数と、符号化経路から新たに割り振られた経路を初期化する、符号化経路からの経路関数とを含む、関数を含むことができる。
【００９０】
ポリゴンクラス:ポリゴンクラスは、マップ上に出現するポリゴンを規定することができる。(ポリラインのような)ポリゴンは、順序付けされたシーケンスで接続された一連の座標を規定し、追加として、ポリゴンは、閉ループを形成し、充填される領域を画定する。ポリゴンクラスは、オーバーレイクラスを継承することができる。ポリゴンクラスは、特定の経路に対するポリゴンクラスのためのコンビニエンスコンストラクタである経路付きポリゴン静的関数(polygon with path static function)を含むことができる。ポリゴンクラスは、以下のプロパティ、すなわち、ポリゴンを記述する経路を提供する経路プロパティ(path property)と、このポリゴンにおける任意のホールを記述する経路インスタンスのアレイを提供するホールプロパティ(holes property)と、スクリーンポイントにおけるポリゴン輪郭の幅を提供するストローク幅プロパティと、ポリゴン輪郭の色を提供するストローク色プロパティと、充填色を提供する充填色プロパティと、ポリゴンが測地補正を用いてレンダリングされるべきかどうかを提供する測地プロパティ(geodesic property)と、タイトル、すなわち、オーバーレイの短い説明を提供するタイトルプロパティと、このオーバーレイがオンであることをマップに提供するマッププロパティと、オーバーレイがタップ通知を生起させるべきかどうかを提供するタップ可能プロパティと、より大きいzインデックス値のオーバーレイがより小さいzインデックス値のタイルレイヤおよびオーバーレイの上部に描かれるという点で階層化系統を提供するzインデックスプロパティとを含むことができる。
【００９１】
ポリラインクラス:ポリラインクラスは、通常は経路プロパティの中で指定された点の間の物理的な線として描かれる、地球の表面上に存在するポリラインに対して、利用可能なオプションを指定することができる。ポリラインクラスは、オーバーレイクラスを継承することができる。ポリラインクラスは、特定の経路に対するポリラインクラスのためのコンビニエンスコンストラクタである経路付きポリライン関数(polyline with path function)を含むことができる。ポリラインクラスは、以下のプロパティ、すなわち、ポリラインを記述する経路を提供する経路プロパティと、スクリーンポイントにおける線の幅を提供するストローク幅プロパティと、線の色を提供するストローク色プロパティと、ポリラインが測地補正を用いてレンダリングされるべきかどうかを提供する測地プロパティと、ポリラインをレンダリングするために使用されるスタイルスパンクラス(style span class)を含むアレイを提供するスパンプロパティ(spans property)と、タイトル、すなわち、オーバーレイの短い説明を提供するタイトルプロパティと、このオーバーレイがオンであることをマップに提供するマッププロパティと、オーバーレイがタップ通知を生起させるべきかどうかを提供するタップ可能プロパティと、より大きいzインデックス値のオーバーレイがより小さいzインデックス値のタイルレイヤおよびオーバーレイの上部に描かれるという点で階層化系統を提供するzインデックスプロパティとを含むことができる。
【００９２】
投影クラス(projection class):投影クラスは、地球座標とマップのビューにおける座標との間のマッピングを規定することができる。投影クラスは、地球座標をマップのビューの中の点座標にマッピングする、座標に対する点関数(point for coordinate function)と、マップのビューの中の点座標を地球座標にマッピングする、点に対する座標関数(coordinate for point function)と、距離をコンテンツサイズに変換する、座標における点関数(points at coordinate function)と、所与の座標が投影内に含まれるかどうかを戻す座標収容関数と、投影に従って目に見える領域を戻す可視領域関数(visible region function)とを含む、関数を含むことができる。
【００９３】
逆ジオコード応答クラス(reverse geocode response class):逆ジオコード応答クラスは、逆ジオコード要求からの結果の集合であり得る。逆ジオコード応答クラスは、第1の結果、または結果が利用可能でなかった場合にnilを戻す、第1の結果関数(first result function)と、第1の結果を含むすべての結果のアレイを戻す結果関数(results function)とを含む、関数を含むことができる。
【００９４】
サービスクラス:サービスクラスは、マップAPIに対するサービスクラスの共有されるインスタンスを提供し、必要ならばそれを作成する、共有サービス関数と、マップAPIに鍵を提供するAPI鍵提供関数と、オープンソースソフトウェアライセンス情報を戻すオープンソースライセンス情報関数(open source license info function)と、マップAPIのリリースのバージョンを戻すバージョン関数とを含む、静的パブリックメンバ関数を含むことができる。
【００９５】
ストロークスタイルクラス(stroke style class):ストロークスタイルクラスは、ポリラインなどの1次元エンティティに対する描画スタイルを記述することができる。ストロークスタイルクラスは、一体色ストロークスタイルを作成する一体色関数(solid color function)と、ある色から別の色まで補間する勾配ストロークスタイルを作成する、色から色への勾配関数(gradient from color to color function)とを含む、関数を含むことができる。
【００９６】
スタイルスパンクラス:スタイルスパンクラスは、ポリラインのいくつかの領域に対するスタイルを記述することができる。スタイルスパンクラスは、1セグメント長の一体色スパンを戻す、色付きスパン関数(span with color function)と、所与の個数のセグメントを有する一体色スパンを戻す、色セグメント付きスパン関数(span with color segments function)と、1セグメント長の所与のスタイルを有するスパンを戻す、スタイル付きスパン関数(span with style function)と、所与のスタイルおよびセグメント数単位の長さを有するスパンを戻す、スタイルセグメント付きスパン関数(span with style segments function)とを含む、ファクトリ関数を含むことができる。スタイルスパンクラスは、以下のプロパティ、すなわち、スパンのスタイルを提供するスタイルプロパティ(style property)と、スパンの長さをセグメント数単位で提供するセグメントプロパティ(segments property)とを含むことができる。
【００９７】
同期タイルレイヤクラス(sync tile layer class):  同期タイルレイヤクラスは、画像タイルデータを生成するための同期インターフェースを提供する、タイルレイヤクラス(tile layer class)の抽象サブクラスであり得る。同期タイルレイヤクラスは、タイルレイヤクラスを継承することができる。同期タイルレイヤクラスは、タイルオーバーレイ用の画像タイルを生成する、xyズーム用タイル要求レシーバ関数(request tile for x y zoom receiver function)と、xyズーム用タイル要求レシーバ関数と類似であるがタイルを戻すための同期インターフェースを提供する、xyズーム用タイル関数(tile for x y zoom function)と、すべてのタイルが再び要求されるようにキャッシュをクリアするタイルキャッシュクリア関数(clear tile cache function)とを含む、関数を含むことができる。同期タイルレイヤクラスは、以下のプロパティ、すなわち、このオーバーレイがオンであることをマップに提供するマッププロパティと、より大きいzインデックス値のオーバーレイがより小さいzインデックス値のタイルレイヤおよびオーバーレイの上部に描かれるという点で階層化系統を提供するzインデックスプロパティと、戻されたタイル画像が表示するのを好むピクセル数を指定するタイルサイズプロパティ(tile size property)と、タイルレイヤの不透明度を指定する不透明度プロパティと、タイルがフェードインすべきかどうかを指定するフェードインプロパティ(fade in property)とを含むことができる。
【００９８】
タイルレイヤクラス:タイルレイヤクラスは、指定されたマップビュークラス上でのカスタム画像タイルのオーバーレイを可能にする抽象クラスであり得る。タイルレイヤクラスは、同期タイルレイヤクラスおよびURLタイルレイヤクラス(URL tile layer class)によって継承され得る。タイルレイヤクラスは、タイルオーバーレイ用の画像タイルを生成する、xyズーム用タイル要求レシーバ関数と、すべてのタイルが再び要求されるようにキャッシュをクリアするタイルキャッシュクリア関数とを含む、関数を含むことができる。タイルレイヤクラスは、以下のプロパティ、すなわち、このオーバーレイがオンであることをマップに提供するマッププロパティと、より大きいzインデックス値のオーバーレイがより小さいzインデックス値のタイルレイヤおよびオーバーレイの上部に描かれるという点で階層化系統を提供するzインデックスプロパティと、戻されたタイル画像が表示するのを好むピクセル数を指定するタイルサイズプロパティと、タイルレイヤの不透明度を指定する不透明度プロパティと、タイルがフェードインすべきかどうかを指定するフェードインプロパティとを含むことができる。
【００９９】
タイルレシーバクラス(tile receiver class):タイルレシーバクラスは、タイル要求が行われるとタイルレイヤクラスに提供され得、コールバックが後でまたは直ちに起動されることを可能にする。タイルレシーバクラスは、タイルレイヤクラスの中として振る舞う、xyズーム画像付き受信タイルパブリックメンバ関数(receive tile with x y zoom image public member function)を含むことができる。
【０１００】
URLタイルレイヤクラス:URLタイルレイヤクラスは、コンストラクタから戻されたURLに基づいてタイルをフェッチすることができる。URLタイルレイヤクラスは、タイルレイヤクラスを継承することができる。URLタイルレイヤクラスは、タイルオーバーレイ用の画像タイルを生成する、xyズーム用タイル要求レシーバ関数と、すべてのタイルが再び要求されるようにキャッシュをクリアするタイルキャッシュクリア関数とを含む、関数を含むことができ、タイルレイヤはURLコンビニエンスコンストラクタを有する。URLタイルレイヤクラスは、以下のプロパティ、すなわち、アプリケーションにユーザエージェントを提供するためのユーザエージェントプロパティ(user agent property)と、このオーバーレイがオンであることをマップに提供するマッププロパティと、より大きいzインデックス値のオーバーレイがより小さいzインデックス値のタイルレイヤおよびオーバーレイの上部に描かれるという点で階層化系統を提供するzインデックスプロパティと、戻されたタイル画像が表示するのを好むピクセル数を指定するタイルサイズプロパティと、タイルレイヤの不透明度を指定する不透明度プロパティと、タイルがフェードインすべきかどうかを指定するフェードインプロパティとを含むことができる。
【０１０１】
可視領域クラス(visible region class):可視領域クラスは、マップのカメラの中で目に見えるポリゴンを画定する4つの点を含むことができる。カメラが傾斜を有することができるので、ポリゴンは長方形ではなく台形であり得る。カメラがカメラの中心の真上にある場合、形状は長方形であるが、カメラが傾斜している場合、形状は、その最小の側部が視点に最も近い、台形であるように見える。可視領域クラスは、カメラの下部の左隅角部であってよい近傍左属性、カメラの下部の右隅角部であってよい近傍右属性、カメラの遠くの左隅角部であってよい遠方左属性、およびカメラの遠くの右隅角部であってよい遠方右属性などの、パブリック属性を含んでよい。
【０１０２】
本明細書で説明する技術は、サーバ、データベース、ソフトウェアアプリケーション、および他のコンピュータベースシステム、ならびに行われるアクションおよびそのようなシステムとの間で送られる情報に言及する。コンピュータベースシステムの固有のフレキシビリティにより、構成要素間でのタスクおよび機能性の多種多様な可能な構成、組合せ、および分割が可能になることを、当業者は認識されよう。たとえば、本明細書で説明したサーバプロセスは、単一のサーバまたは組合せで機能する複数のサーバを使用して実装され得る。データベースおよびアプリケーションは、単一のシステム上に実装されてよく、または複数のシステムにわたって分散されてもよい。分散された構成要素は、連続的にまたは並行して動作し得る。
【０１０３】
本主題はそれらの特定の例示的な実施形態に関して詳細に説明されているが、当業者が、上記のことの理解に到達すると、そのような実施形態の改変、そのような実施形態の変形、およびそのような実施形態の均等物を容易に生み出し得ることが諒解されよう。したがって、本開示の範囲は限定ではなく例としてのものであり、本開示は、当業者にとって容易に明らかなことになるように、本主題へのそのような修正、変形、および/または追加を含めることを排除しない。
【符号の説明】
【０１０４】
100  システム
112  ユーザデバイス
114  ナビゲーションデータプロバイダ
115  地理情報システム
116  通信ネットワーク
120  ソフトウェアアプリケーション
130  ナビゲーションAPI
135  マップAPI
140  ルーティングエンジン
152  命令メモリ
154  プロセッサ
156  表示デバイス
158  ネットワークインターフェース
160  記憶メモリ
170  オペレーティングシステム(OS)
402  ナビゲーションサービスクラス
404  UI設定クラス
406  他のクラス/プロトコル
410  ナビゲータクラス
412  目的地設定コールバック関数
414  次の目的地まで継続関数
416  目的地クリア関数
418  中間地点までの時間関数
420  中間地点までの距離関数
422  既存ルートに沿ったロケーションシミュレート関数
424  シミュレーション停止関数
426  案内アクティブプロパティ
428  次の目的地までの時間プロパティ
430  次の目的地までの距離プロパティ
432  現在ルート区間プロパティ
435  ルート区間プロパティ
436  音声案内プロパティ
438  振動有効化プロパティ
440  ナビゲータデリゲート
442  ロケーション更新関数
444  中間地点到着関数
446  ルート変更関数
448  残り時間更新関数
450  残り距離更新関数
【図１】
0006780127.tif 000002
【図２】
0006780127.tif 000003
【図３】
0006780127.tif 000004
【図４】
0006780127.tif 000005
【図５】
0006780127.tif 000006
【図６】
0006780127.tif 000007