バウンディング ボックスまたはルートを指定して地図をダウンロードします
マップ データを永続キャッシュにフェッチして(デフォルトサイズは 256 MB )、ルートの周りにバウンディング ボックスまたは半径を指定することで、オフライン マップ機能を有効にできます。 これは NMAMapDataPrefetcher
、および関連付けられているクラスを使用して行うことができます。 に NMAMapDataPrefetcher
は、フェッチのサイズの概算( KB 単位)、フェッチの開始、フェッチのキャンセル、マップ データキャッシュの消去を行う一連のメソッドがあります。
NMAMapDataPrefetcher および NMAMapDataPrefetcherListener
NMAMapDataPrefetcher
sharedMapDataPrefetcher
は、メソッドを使用して取得する必要があるシングルトンです。 次のコード例は、基本 NMAMapDataPrefetcher
的な使用方法を示しています。
estimateMapDataSizeForBoundingBox:error:
、または estimateMapDataSizeForRoute:radius:error:
の方法を使用します。 NMAPrefetchRequestError error = NMAPrefetchRequestErrorNone;
NSInteger requestId =
[[NMAMapDataPrefetcher sharedMapDataPrefetcher]
estimateMapDataSizeForBoundingBox:bbox error:&error];
NMAMapDataPrefetcher
フェッチを開始するには fetchMapDataForBoundingBox:error:
、またはを使用 fetchMapDataForRoute:radius:error:
します。
NMAGeoBoundingBox* bbox = …
NMAPrefetchRequestError error = NMAPrefetchRequestErrorNone;
NSInteger requestId = [[NMAMapDataPrefetcher sharedMapDataPrefetcher] fetchMapDataForBoundingBox:bbox error:&error];
...
NMAMapDataPrefetcher
フェッチをキャンセルするには cancel:
、メソッドを呼び出します。
NSInteger requestId = ...
[[NMAMapDataPrefetcher sharedMapDataPrefetcher] cancel:requestId];
...
NMAMapDataPrefetcher
操作は非同期で実行されます。 これらの操作の結果が利用可能に NMAMapDataPrefetcher
なると、リスナに渡されます。 リスナーは NMAMapDataPrefetcherListener
プロトコルを実装する必要があります。 NMAMapDataPrefetcherListener
プロトコルのコールバックは次のとおりです。
-
prefetcher:didUpdateProgress:forRequestId:
- マップ データのフェッチ中に呼び出され、リクエスト ID の [0 ~ 1] の範囲で完了した進行状況を示します。 -
prefetcher:didUpdateStatus:forRequestId:
- マップ データのフェッチ中に呼び出され、リクエスト ID のステータスを示します。 -
prefetcher:didPurgeCache:
- コールバック:未使用のマップ データのキャッシュがクリアされたことを示します。
NMAPrefetchStatus 列挙型 (enum)
NMAPrefetchStatus
NMAMapDataPrefetcher
フェッチ操作のステータスを表す 列挙型 (enum) データ型です。 NMAMapDataPrefetcherListener
このステータスはプロトコルを介して返されます。
-
NMAPrefetchStatusInProgress
-NMAMapDataPrefetcher
フェッチ操作がまだ進行中です -
NMAPrefetchStatusSuccess
-NMAMapDataPrefetcher
フェッチが正常に完了しました -
NMAPrefetchStatusFailure
-NMAMapDataPrefetcher
フェッチ操作が完了しませんでした -
NMAPrefetchStatusCancelled
-NMAMapDataPrefetcher
フェッチ操作がキャンセルされました
NMAPrefetchRequestError 列挙型 (enum)
NMAPrefetchRequestError
NMAMapDataPrefetcher
フェッチ操作の開始時に発生したエラーを表す 列挙型 (enum) データ型です。
-
NMAPrefetchRequestErrorNone
–リクエストのディスパッチでエラーは発生しません。 -
NMAPrefetchRequestErrorUnkown
–リクエストの送信中に不明なエラーが発生しました。 -
NMAPrefetchRequestErrorBusy
–リクエスト数が最大容量に達しています。 -
NMAPrefetchRequestErrorInvalidParameters
–無効なパラメータが原因で、リクエストが無効になりました。 -
NMAPrefetchRequestErrorOperationNotAllowed
– ODML プリフェッチ権限がありません。
アプリケーションレベルでネットワーク接続を確認 NMAMapDataPrefetcher
し、デバイスが接続されている場合にのみ操作が実行されるようにします。
差分アップデート
バウンディング ボックスまたはルートを指定してダウンロードしたマップ データは NMAMapLoader
、 API を使用して最新バージョンに更新できます。 マップ データバージョンは、マップ データがダウンロードされているかどうかにかかわらず、システム全体のすべてのマップ データで一貫性があります。 1 つのマップバージョンおよび別のバージョンの一部のデータをキャッシュに同時に含めることはできません。 そのため、地図のバージョンを最新の状態に保つことが重要です。
2 つの以前のリリースから最新のマップ データリリースに更新する場合は、差分更新を実行できます。 変更内容のみがダウンロードされるため、通常は差分アップデートのダウンロードは小規模です。 たとえば、 2017 年第 4 四半期または 2017 年第 3 四半期のリリースから 2018 年第 1 四半期のマップ データリリースに更新する場合、増分更新またはパッチが使用されます。 パッチが利用できない場合(例 NMAMapLoader
: 2017 年第 2 四半期から 2018 年第 1 四半期に更新)、 API を使用して最新バージョンに更新すると、データがオンデマンドでダウンロードされたか、またはバウンディングボックス / ルートを指定してダウンロードされたすべてのマップ データが削除されます。
データグループ
マップパッケージは複数のグループで構成され、各グループには異なるタイプのマップ データが含まれています。 オフラインで使用するためにマップパッケージをダウンロードする前に、アプリケーションのニーズに応じて、これらのグループの一部を選択または選択解除できます。 オプションのデータグループは NMAMapDataGroup
列挙型 (enum) で指定します。 ダウンロードするデータグループを選択または選択解除するには、 NMAMapLoader selectDataGroup:
または deselectDataGroup:
メソッドに適切な 列挙型 (enum) 値を渡します。 isDataGroupSelected:
メソッドを使用して、データグループの現在の選択状態を照会できます。