iOS 開発者ガイド for SDK

バウンディング ボックスまたはルートを指定して地図をダウンロードします

マップ データを永続キャッシュにフェッチして(デフォルトサイズは 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 を使用して最新バージョンに更新すると、データがオンデマンドでダウンロードされたか、またはバウンディングボックス / ルートを指定してダウンロードされたすべてのマップ データが削除されます。

注 : マップ データの更新を実行する際には、マップ データを使用する可能性のあるすべての HERE SDK 機能 ( マップのパン、検索、ルーティングなど ) を一時停止し、操作が完了したら再開することをお勧めします。

データグループ

マップパッケージは複数のグループで構成され、各グループには異なるタイプのマップ データが含まれています。 オフラインで使用するためにマップパッケージをダウンロードする前に、アプリケーションのニーズに応じて、これらのグループの一部を選択または選択解除できます。 オプションのデータグループは NMAMapDataGroup 列挙型 (enum) で指定します。 ダウンロードするデータグループを選択または選択解除するには、 NMAMapLoader selectDataGroup: または deselectDataGroup: メソッドに適切な 列挙型 (enum) 値を渡します。 isDataGroupSelected: メソッドを使用して、データグループの現在の選択状態を照会できます。