ガイド変更履歴HERE SDK API references
ガイド

以前のバージョンから更新する

HERE SDKを最新の状態に保つことで、最新の機能、改善点、マップデータを利用できます。最新の更新を利用するには、HERE SDKの最新のバージョンをアプリケーションに統合し、更新を公開します。Navigateをご利用のお客様向けに、このガイドでは最新の地図のバージョンに自動的に更新する方法と、必要に応じて以前の地図のバージョンにダウングレードする方法について説明します。

以下の手順でHERE SDK AARを置き換えることで、HERE SDKの最新のバージョンに更新できます。

  1. 最新のHERE SDKリリースを入手します。詳細については、「利用開始」を参照してください。
  2. HERE SDK AARファイル (*.aar) をアプリケーションのapp/libsフォルダー (アプリのbuild.gradleファイルで指定) にコピーします。
  3. Android Studio を使用している場合は、Sync ボタン ([Sync Project with Gradle Files](プロジェクトを Gradle ファイルと同期)) をクリックして HERE SDK に統合します。
  4. 必要に応じて、アプリケーションのソースコードを最新のAPI変更に適合させます。

現在のHERE SDKバージョンを取得する

SDKBuildInformationから、現在統合されているHERE SDK Androidアーカイブ (AAR) のバージョンを取得できます。

Log.d("HERE SDK version: ", SDKBuildInformation.sdkVersion().versionName);

HERE SDKのバージョンはSDKによって自動的に記録されます。

自動的に更新する (Navigateでのみ使用可能)

HERE SDKバージョンは、新しいHERE SDKリリースをアプリケーションに統合することによってのみ更新できます。

プログラムによってマップ バージョンを更新する方法を以下に示します。現在統合されている HERE SDK バージョンとは無関係に、マップ バージョンを更新できます。

マップ バージョンによって、オンラインとオフラインの両方の使用向けに取得されるデータが決まります。このデータには、地図の視覚化に関連する情報と、検索、ルート検索、ナビゲーションに使用されるデータが含まれます。取得するデータを指定するには、デフォルトの LayerConfiguration を変更します。

アプリの更新で HERE SDK の新しいバージョンが統合されると、多くの場合、新しいマップ バージョンも統合されます。ただし、マップ データは自動的に更新されません。

  • mapUpdater.getCurrentMapVersion() を呼び出して、現在使用されている地図のバージョンを確認します。
  • マップ バージョンの更新が利用可能かどうかを確認するには、mapUpdater.retrieveCatalogsUpdateInfo() を呼び出します。

各アプリケーションの起動時などに、最新のマップ バージョンに自動的に更新することはできるでしょうか。

  • これは、インストールされている地域がない場合は可能です。これがどのように行われるかをお読みください。
  • インストールされている地域がある場合は、mapUpdater.updateCatalog() を使用して更新する必要があります。詳細は「オフライン マップ」セクションを参照してください。インストールされている地域がない場合は、CatalogVersionHint を設定することで更新できます。

CatalogConfiguration を作成するときに、CatalogVersionHint を設定できます (上記も参照)。

// We want to start with the latest catalog version.
boolean ignoreCachedData = true;
CatalogVersionHint versionHint = CatalogVersionHint.latest(ignoreCachedData);

実際には、HERE SDK を初期化する起動ごとに、キャッシュに保存されたマップ データが自動的に更新されます。デフォルトでは、マップのOCM IDを設定する必要があります (カスタムマップを使用する場合以外は、上記を参照)。

String defaultOCMHRN = "hrn:here:data::olp-here:ocm";
DesiredCatalog defaultOCMCatalog = new DesiredCatalog(defaultOCMHRN, versionHint);
catalogConfigurations.add(new CatalogConfiguration(defaultOCMCatalog));

patchHrn値が設定されていない場合、地図の増分更新が無効になることに注意してください。地域をインストールしている場合は、mapUpdater.updateCatalog()を使用して更新する必要があります。「オフラインマップ」セクションを参照してください。地図の増分更新は、地域がインストールされている場合にのみ適用されます。

次のステップとして、HERE SDKを初期化し、SDKOptionsを使用してcatalogConfigurationsを設定します。

AuthenticationMode authenticationMode = AuthenticationMode.withKeySecret(accessKeyID, accessKeySecret);
SDKOptions options = new SDKOptions(authenticationMode);
options.catalogConfigurations = catalogConfigurations;

try {
    Context context = this;
    SDKNativeEngine.makeSharedInstance(context, options);
} catch (InstantiationErrorException e) {
    throw new RuntimeException("Initialization of HERE SDK failed: " + e.error.name());
}

デバイスにインストールされている地域がある場合は、キャッシュに保存されたマップデータはこのコードで更新されないことに注意してください。デバイスに存在するキャッシュに保存されたデータ (たとえば、マップ キャッシュ内のデータや、PrefetchAroundLocation または PrefetchAroundRouteOnIntervals によってキャッシュに保存されたデータなど) は、新しいマップ バージョンが利用可能になると使われなくなります。このようなデータは、LRU 方式により時間の経過ともに削除されます。つまり、キャッシュはすぐには削除されませんが、必要に応じて新しいデータが使用され、キャッシュがいっぱいになると古いデータが削除されます。そのため、これが起動時間に与える影響はまったくないか、非常に限られています。

キャッシュに保存された、HERE SDK (Navigate) などのOCMベースのマップデータを自動的に更新するには、上述のコードスニペットに示されているように、DesiredCatalog内でデフォルトのHRN値"hrn:here:data::olp-here:ocm"を使用します。

ignoreCachedDataのフラグを使用して、マップバージョンを更新しようとするときに、デバイスに存在するキャッシュデータをどのように処理するかを指定できます。false に設定すると、HERE SDK はキャッシュに保存されたマップ データがまったくなく (たとえば、最初のインストール時やキャッシュを消去した後など)、さらにインストールされたマップ データがない場合にのみ、最新バージョンを使用するように自動更新されます。これ以外の場合は、効果はありません。

以前のバージョンにダウングレードする (Navigateでのみ使用可能)

下位のマップバージョンを選択することもできます。たとえば、現在のカタログよりも古い特定のカタログバージョンで起動する場合などです。

List<CatalogConfiguration> catalogConfigurations = new ArrayList<>();
CatalogVersionHint versionHint = CatalogVersionHint.specific(57);

この後は、HERE SDK を初期化するときに、前のセクションと同じ手順を実行します。

これは、キャッシュに保存されたマップ データや保持されたマップ データ (インストールされた地域のもの) がない場合にのみ効果があることに注意してください。たとえば、次のように呼び出すことで、アプリケーションを終了する前にキャッシュを消去できます。

SDKCache.fromEngine(SDKNativeEngine.getSharedInstance()).clearCache(error -> {
    if (error != null) {
        Log.d(TAG, "clearCache failed: " + error.name());
    }
});

初めてインストールする場合はこれを行う必要はありません (マップ ビューを表示する前やルート データを取得する前にこれを行う場合)。

HERE SDK では、インストールされた Region マップ データをダウングレードしたり、自動更新したりすることは許可されていません。MapUpdaterでは、オフラインマップデータ (およびキャッシュ) を最新バージョンに更新することのみが可能です。

廃止版とベータ版

HERE SDK のチームは、一貫したインターフェースとともに柔軟性と使いやすさの両方を提供するため、利用可能な API を継続的に見直し、改善しています。

リリース全体で安定した API を確保するため、当社では廃止プロセスを遵守しています。廃止 API は、ChangeLog で廃止が発表された後、その次のメジャー リリースから数えた 2 つのメジャー バージョンでは維持されます。この期間は通常 6 ~ 9 か月です。「APIリファレンス」では、インターフェースが廃止とマークされたときに影響を受けるバージョンをいつでも確認できます。iOS、Android、Flutterのサポートされているバージョンへの更新は個別に扱われ、少なくとも1つ前のメジャーリリースの時点で、ChangeLogにて告知されています。

一部の新しいAPIや不安定になる可能性のあるAPIは、「APIリファレンス」で「ベータ」として指定されています。ベータリリースは、特に明記されている場合を除き、廃止のプロセスに従いません。ベータAPIを使用する場合は、バグが含まれている可能性があり、予期しない動作を示す可能性があることに注意してください。

HERE SDKで使用されるHEREバックエンドサービスについては、機能ライフサイクルポリシーを参照してください。

私たちはユーザーの皆様のフィードバックを大切にしており、さらなる改善のための提案に常に耳を傾けています。


EN 日本語

HERE documentation

Find answers to your product and technical questions

Documentation

What's new

Videos

EN 日本語

HERE ドキュメント

製品や技術に関する質問の答えを見つけましょう。より多くの内容と最新の情報については、英語版をご覧ください。

ドキュメント

ダイナミックマップ

動的コンテンツ関連のAPIをアプリやサービスに活用して、ドライバーが安全・快適かつ予定どおりに目的地へ到着できるよう支援します。

地図とデータ

世界中を走行する多数のマッピング車両から得られる最新の位置情報データを活用し、精度の高い地図やカスタムレイヤーを構築できます。

最新情報

動画

(function () { const input = document.querySelector('input[data-typeahead]'); if (!input) return; // Prevent the form from submitting/navigating input.closest('form')?.addEventListener('submit', e => e.preventDefault()); input.addEventListener('input', function () { const q = this.value.trim().toLowerCase(); document.querySelectorAll('.nav-group-name').forEach(group => { let anyVisible = false; group.querySelectorAll('.nav-group-task').forEach(task => { const text = task.textContent.trim().toLowerCase(); const show = !q || text.includes(q); task.style.display = show ? '' : 'none'; if (show) anyVisible = true; }); // Hide the whole group header if nothing matches group.style.display = anyVisible || !q ? '' : 'none'; }); }); })(); (function () { function onTokenClick(event) { var link = event.target.closest('.sdk-for-ios .item .token'); if (!link) return; event.preventDefault(); console.log('token clicked', link.textContent.trim()); var item = link.closest('.item'); if (!item) return; var content = item.querySelector('.height-container'); if (!content) { console.log('no .height-container found for item', item); return; } var isHidden = window.getComputedStyle(content).display === 'none'; content.style.display = isHidden ? 'block' : 'none'; link.classList.toggle('token-open', isHidden); var href = link.getAttribute('href'); if (href) { if (history.pushState) history.pushState({}, '', href); else location.hash = href; } } function openHashTarget() { var hash = window.location.hash.slice(1); if (!hash) return; var anchor = document.querySelector('.sdk-for-ios a[name="' + hash + '"]'); if (!anchor) return; var item = anchor.closest('.item'); if (!item) return; var link = item.querySelector('.token'); var content = item.querySelector('.height-container'); if (!link || !content) return; content.style.display = 'block'; link.classList.add('token-open'); } function init() { console.log('HERE SDK accordion init'); openHashTarget(); } document.removeEventListener('click', onTokenClick); document.addEventListener('click', onTokenClick); if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } window.addEventListener('hashchange', openHashTarget); window.addEventListener('pageLoad', init); })();