地図パッケージのダウンロード
オフラインマップ機能を取得する 2 つ目の方法は NMAMapLoader
、および関連するオブジェクトを使用して有効にします。 NMAMapLoader
このクラスは、デバイスに保存されているマップ データの操作を許可する API のセットを提供します。 次の操作を行います。
-
getMapPackages
- デリゲートコールバックを介して、デバイスのマップ データの現在の状態を取得します。 この非同期操作が完了するとrootPackage
、パッケージ階層のルート項目もプロパティに入力されます -
getMapPackageAtGeoCoordinates:
-NMAMapPackage
特定のジオコード化された位置を含む最小の位置を検索します -
installMapPackages:
- 指定したのインストール対象のリストを要求しますNMAMapPackage
-
uninstallMapPackages:
- 指定したのアンインストールリストを要求しますNMAMapPackage
-
checkForMapDataUpdate
- 新しいマップ データバージョンが利用可能かどうかを確認します -
getMapDataUpdateSize
- 保留中のマップ データバージョンの更新のサイズを取得します -
performMapDataUpdate
- マップ データバージョンの更新を実行します ( 可能な場合 ) -
cancelCurrentOperation
- 実行MapLoader
中の操作をキャンセルします
NMAMapLoader
sharedMapLoader
は、メソッドを使用して取得する必要があるシングルトンです。 次のコード例は、基本 NMAMapLoader
的な使用方法を示しています。
- 開始します
NMAMaploader
- (void) initMapLoader { NMAMapLoader *mapLoader = [NMAMapLoader sharedMapLoader]; mapLoader.delegate = self; ... [[NMAMapLoader sharedMapLoader] getMapPackages]; ... }
- マップパッケージをインストールします
- (void) startInstall { ... NSArray *packageArray = [[NSArray alloc] initWithObjects:packageToModify, nil]; [[NMAMapLoader sharedMapLoader] installMapPackages:packageArray]; ... }
NMAMapLoader
操作は非同期で実行されます。 これらの操作の結果が利用可能になると、マップローダーデリゲートに渡されます。 デリゲートに NMAMapLoader delegate
はプロパティを使用してアクセス NMAMapLoaderDelegate
し、プロトコルを実装する必要があります。 NMAMapLoaderDelegate
プロトコルのコールバックは次のとおりです。
-
mapLoader:didUpdateProgress:
-NMAMapLoader
操作中に呼び出され、その操作の現在の進行状況を示します mapLoader:didInstallPackagesWithResult:
-NMAMapLoader
installMapPackages:
メソッド呼び出しに関連付けられているコールバックmapLoader:didUninstallPackagesWithResult:
-NMAMapLoader
uninstallMapPackages:
メソッド呼び出しに関連付けられているコールバックmapLoader:didFindUpdate:fromVersion:toVersion:withResult:
-NMAMapLoader
checkForMapDataUpdate
メソッド呼び出しに関連付けられているコールバックmapLoader:didGetUpdateSize:withResult:
-NMAMapLoader
getMapDataUpdateSize
メソッド呼び出しに関連付けられているコールバックmapLoader:didUpdateWithResult:
-NMAMapLoader
performMapDataUpdate
メソッド呼び出しに関連付けられているコールバックmapLoader:didGetMapPackages:withResult:
-NMAMapLoader
getMapPackages
メソッド呼び出しに関連付けられているコールバック-
mapLoader:didGetMapPackage:atGeoCoordinates:withResult:
-NMAMapLoader getMapPackageAtGeoCoordinates:
メソッド呼び出しに関連付けられているコールバック -
mapLoaderDidLoseConnection:
-NMAMapLoader
操作中にがサーバ接続を失った場合に送信されるコールバック -
mapLoaderDidFindConnection:
- がNMAMapLoader
接続を再確立したときにコールバックが送信されました
NMAMapLoader
がマップパッケージをダウンロードしている間にアプリがバックグラウンドに切り替えられた場合、ダウンロードはバックグラウンドで最大 3 分間継続されます。 この時間内にダウンロードが完了しなかった場合、アプリが再びアクティブになるとダウンロードが再開されます。 GitHub でのマップローダの例
この機能を示す例について は、 https://github.com/heremaps/ (Obj-C) および https://github.com/heremaps/ (Swift) を参照してください。
NMAMapLoaderResult 列挙型 (enum)
NMAMapLoaderResult
NMAMapLoader
操作のステータスを表す 列挙型 (enum) データ型です。 ステータスは NMAMapLoaderDelegate
プロトコルを介して返されます。
-
NMAMapLoaderResultSuccess
-NMAMapLoader
操作がエラーなしで完了しました。 -
NMAMapLoaderResultInvalidParameters
-NMAMapLoader
無効なパラメータで操作が呼び出されました。 -
NMAMapLoaderResultOperationCancelled
-NMAMapLoader
cancelCurrentOperation の呼び出しによって操作がキャンセルされました。 -
NMAMapLoaderResultConnectionFailed
- マップ データサーバーへの接続を確立できません。 -
NMAMapLoaderResultInitializationFailed
-NMAMapLoader
を初期化できませんでした。
NMAMapLoader
デバイスに接続がある場合にのみ操作が実行されるように、アプリケーションレベルでネットワーク接続を確認することをお勧めします。
NMAMapPackage インターフェイス
ダウンロード可能なマップ データパッケージは、ワールドマップを表すルートマップパッケージを含むツリー構造で表されます。 NMAMapPackage
インタフェースは、このツリー構造へのアクセスに使用されるモデルを表します。 クラスのプロパティ NMAMapPackage
は次のとおりです。
parent
children
packageld
sizeOnDisk
installed
installed
特定 NMAMapPackage
のインスタンスの状態は、ディスク上のマップ データへの変更を反映するように動的に更新されません。 たとえば NMAMapPackage
、を使用してインスタンスを取得 getMapPackages
し、 installMapPackages
このパッケージをパラメータとしてメソッドを呼び出した場合 didInstallPackagesWithResult
、コールバックが発生してもこのパッケージの状態は変わりません。 代わりに、最新のインストール状態の NMAMapPackage
を取得する場合は、 NMAMapLoader rootPackage
プロパティにアクセスします。 rootPackage
このプロパティは、インストール操作のたびに新しいオブジェクトインスタンスで更新されます。
差分アップデート
MapLoader では、マップ データバージョンを更新して、利用可能な最新のマップ データをユーザーに提供する機能が提供されます。 マップ データバージョンは、 MapLoader を使用してプレインストールされたマップ データだけでなく、オンデマンドでダウンロードされたデータにも適用されます。
マップ データバージョンは、マップ データがダウンロードされているかどうかにかかわらず、システム全体のすべてのマップ データで一貫性があります。 あるマップバージョンのデータと別のマップバージョンのデータの一部をディスクキャッシュで同時に使用することはできません。 そのため、地図のバージョンを最新の状態に保つことが重要です。
2 つの以前のリリースから最新のマップ データリリースに更新する場合は、差分更新を実行できます。 変更内容のみがダウンロードされるため、通常は差分アップデートのダウンロードは小規模です。 たとえば、 2017 年第 4 四半期または 2017 年第 3 四半期のリリースから 2018 年第 1 四半期のマップ データリリースに更新する場合、増分更新またはパッチが使用されます。 パッチが利用できない場合( 2017 年第 2 四半期から 2018 年第 1 四半期までのアップデートなど)、すべてのマップ データパッケージが再ダウンロードされ、ダウンロードサイズが大幅に増加します。 マップバージョンの更新は checkForMapDataUpdate
、および performMapDataUpdate
のメソッドを使用して公開 NMAMapLoader
されます。
データグループ
マップパッケージは複数のグループで構成され、各グループには異なるタイプのマップ データが含まれています。 これらのグループの一部は、オフラインで使用するためにマップパッケージをダウンロードする前に、アプリケーションのニーズに応じて選択または選択解除できます。 オプションのデータグループは NMAMapDataGroup
列挙型 (enum) で指定します。 ダウンロードするデータグループを選択または選択解除するには、 NMAMapLoader selectDataGroup:
または deselectDataGroup:
メソッドに適切な 列挙型 (enum) 値を渡します。 isDataGroupSelected:
メソッドを使用して、データグループの現在の選択状態を照会できます。
選択したマップローダーのデータグループは、今後のすべてのインストール操作に使用されます。 ただし、データグループの選択内容を変更しても、以前にインストールされたパッケージには影響がありません。 これらのパッケージを更新する performMapDataUpdate
には、データグループの選択内容を変更した後でを呼び出します。
NMAMapDataGroupTruckAttributes
やNMAMapDataGroupScooterAttributes
などのデータグループを除外できます。