地図を使用します

HERE SDK for iOS の主要な機能の 1 つ がマッピングです。マッピングには、マップ ビューの追加、マップに表示される場所の変更、およびそのプロパティの変更が含まれます。 マッピング API の主なコンポーネントはマップ ビュー UIView です。このコンポーネントはサブクラスとして統合されています。 マップ ビューは マップおよびさまざまなプロパティを表示するためのベクトルベースのビューを表します。

HERE Map Data は 毎週更新 され、常に最新のマップ データを利用できるようになっています。 マップ ビューを統合することで、このメリットを自動的に享受できます。

簡単な地図アプリケーションを作成するに は、はじめにのセクションを参照してください。

地図とそのプロパティを操作するには、まず [ カメラ ] セクションを確認することをお勧めします。 その他の機能 :

  • 一般的なマップジェスチャや、パニングや回転などのデフォルトのマップビヘイビアーを処理するためのマップジェスチャ。
  • サテライトと通常のマップ レイヤーなどの既定のマップスタイルを瞬時に切り替えるマップスキーム。 利用可能な地図スキームの詳細については、以下を参照してください。
  • アイテムをマップ して、オブジェクトと図形をマップに配置し、それらを操作します。
  • カスタムサーバーイメージを追加のマップ レイヤーとして表示するカスタムのラスタータイル。
  • カスタムマップスキームを読み込むカスタムマップスタイル

パフォーマンスの最適化

デフォルト MapView では、は 60 フレーム / 秒( FPS )でレンダリングされます。 mapView.frameRate 最大フレームレートを使用して調整できます。たとえば、ローエンドデバイスでの CPU/GPU の使用量を削減できます。 FPS を 0 に設定することで、自動レンダリングサイクルを非アクティブ化することもできます。 負の値を設定しても効果はありません。 MapView この値は、アプリに複数 MapViewのが含まれている場合に、インスタンスごとに個別に設定できます。

別 のオプションとして、レンダリングする要素が少ないカスタムマップスタイルを使用することもできます。

HERE SDK フレームワークのサイズを縮小するため に、未使用のフォントはアプリケーションを出荷する前に削除できます。

その他のオプションについては 、「最適化ガイド」で説明しています。

地図スキームを読み込みます

HERE SDK では、 5 つの事前設定済みマップスキームがサポートされて

  • normalDay: 昼間の使用に適したロスレスのスケーラブルなベクトルベース マップ。
  • normalNight: 夜間使用のためのロスレスでスケーラブルなベクトルベース マップ。
  • hybridDay: 衛星の画像と、ベクトルストリートネットワーク、地図ラベル、 POI 情報を組み合わせたハイブリッド方式の昼間バージョン。
  • hybridNight: 衛星の画像と、ベクトルストリートネットワーク、地図ラベル、 POI 情報を組み合わせたハイブリッド方式の夜間バージョン。
  • satellite: さまざまなズームステージの衛星画像を表示するビットマップベースのマップ。

衛星画像を除き、独自の地図スタイルを完全にカスタマイズすることもできます。

マップ スキームをロードするには、次のコード スニペットを使用します。

MapScheme mapScheme = MapScheme.normalDay;

_hereMapController.mapScene.loadSceneForMapScheme(mapScheme,
    (MapError? error) {
  if (error != null) {
    print('Map scene not loaded. MapError: ${error.toString()}');
    return;
  }

  // ...
});

周囲の光が明るい日中は、昼間の日付のバリエーションを使用することをお勧めします。 night バリアントは、軽量化されている場合の使用に合わせて最適化されています。 たとえば、ドライバーがトンネルを通過するときに、アプリケーションが昼間から夜間のスキームに切り替わる場合 があります。 Navigate Edition を使用している場合は、変更された道路属性について通知を受け、トンネルを通過するときに通知を受け取ることができます。 これにより、アプリケーションがマップ スキームをその場で切り替えることができます。 この問題は自動的には発生しません。

HERE SDK は、昼間モードと夜間モードを切り替える現在の時刻を自動的に検出するわけではありません。 アプリケーションは、ユーザーの設定に基づいて、またはデバイスのクロックを確認することによって、この処理を行うことができます。

左から右へ : MapScheme.normalDay 、 MapScheme.normalNight 、 MapScheme.hybridDay 、 MapScheme.hybridNight

利用可能な地図スタイルが最適化され、視覚的な干渉なしにコンテンツやオーバーレイをベース マップに簡単に追加できます。 地図の配色はあまりカラフルではありません。また、色覚異常が発生した場合でも読みやすさを最大限に高めるために、クリーンで中立的な色調をサポートしています。

  • 街路網はグレーのスケールで設計され、明るさ、コントラスト、幅を階層構造で提供します。
  • 全体的に明るい色使いでまとめられている。
  • キーの色は、グレー、ブルー、グリーン、ホワイトです。

さらに、 HERE SDK では ラベルを含まない衛星スキームを提供しています。

MapScheme.satellite

地図レイヤーを地図機能として追加します

HERE SDK では、マップスキームに加え て、特定の種類のレイヤを追加できます。これをマップ機能と呼びます。このレイヤには、現在のトラフィックフローなどの追加情報が表示されます。 以下に、このようなレイヤーを有効にする方法を示します。

_hereMapController.mapScene.enableFeatures({MapFeatures.trafficFlow: MapFeatureModes.trafficFlowWithFreeFlow});
_hereMapController.mapScene.enableFeatures({MapFeatures.trafficIncidents: MapFeatureModes.defaultMode});
_hereMapController.mapScene.enableFeatures({MapFeatures.safetyCameras: MapFeatureModes.defaultMode});
_hereMapController.mapScene.enableFeatures({MapFeatures.vehicleRestrictions: MapFeatureModes.defaultMode});
_hereMapController.mapScene.enableFeatures({MapFeatures.terrain: MapFeatureModes.defaultMode});
_hereMapController.mapScene.enableFeatures({MapFeatures.landmarks: MapFeatureModes.landmarksTextured});
_hereMapController.mapScene.enableFeatures({MapFeatures.extrudedBuildings: MapFeatureModes.defaultMode});
_hereMapController.mapScene.enableFeatures({MapFeatures.buildingFootprints: MapFeatureModes.defaultMode});

同様に、以下のようにレイヤーのリストを無効にすることもできます。

_hereMapController.mapScene.disableFeatures([MapFeatures.trafficFlow, MapFeatures.trafficIncidents]);

すべてのエディションですべての機能レイヤーを利用できるわけではありません。 API リファレンス で サポートされているレイヤーを確認してください。 レイヤーを追加すると、ローエンドデバイスのパフォーマンスへの影響が最小限に抑えられることに注意してください。

以下に、サポートされているすべてのマップレイヤーのスクリーンショットを示します。

交通渋滞レイヤーには、道路での交通渋滞が表示されます。 交通事故マップ レイヤー には、事故、建設工事などの事故が表示されます。 スピードカメラマップ レイヤー にスピード警告カメラが表示されます。 車両制限マップ レイヤー には、トラック固有の情報が表示されます。 Terrain マップ レイヤー (地形)に丘のシェーディングが表示されます。
3D ランドマークマップ レイヤー は、テクスチャード加工のランドマークを示しています 押し出された Buildings マップ レイヤー には、建物の 3D リプレゼンテーションが表示されます。 建物フットプリントマップ レイヤー には、建物の 2D フットプリントが表示されます。 建物およびフットプリントのマップレイヤーは、既定で有効になっています。 これは、無効化されたときの状態です。

一部のレイヤーでは、次の方法で表示されているコンテンツをフィルタリングでき MapContentSettings

  • MapFeatures.trafficIncidents: filterTrafficIncidents​(List<TrafficIncidentType> trafficIncidents) 表示されている交通事故をフィルタリングするために使用します。
  • MapFeatures.vehicleRestrictions: filterVehicleRestrictions​(TruckSpecifications truckSpecifications, List<HazardousMaterial> hazardousMaterials, TunnelCategory tunnelCategory) 表示されているトラック制限をフィルタリングするために使用します。

注 : マップレイヤー buildingFootprints & extrudedBuildings は、でデフォルトで有効 MapViewになっています。

未使用のフォントファイルを削除します

HERE SDK には、サポートされているすべての言語のマップラベルをレンダリングするためのフォントファイルが複数含まれています。 アプリ 全体のサイズを最適化する場合は、選択したフォントを削除できます。

たとえば DroidSansFallback 、フォントでは、共有の Unicode コードポイントに簡体字中国語の表意文字が使用されます。

このフォントを削除するには、 HERE SDK プラグイン フォルダを開き、次のファイルを削除します。

  • iOS の場合 : ios/Frameworks/heresdk.xcframework/ios-arm64/heresdk.framework/geoviz/fonts/DroidSansFallback.ttf
  • Android の場合 :
    1. unzip android/libs/heresdk-navigate-4.11.4.0.8940.rc1.aar (AAR は ZIP 形式であることに注意 )
    2. 解凍した AAR フォルダ内で、を削除 assets/geoviz/fonts/DroidSansFallback.ttfします。
    3. Android Studio を使用して AAR を再アーカイブします。

別の例として、日本語文字の完全なセットをレンダリングする必要がない場合は NotoSansJP-Regular.otf 、フォントを削除できます。

または、 Android でアプリ build.gradle のファイルを編集できます。 android { ... } セクションで、 packagingOptions 選択したフォントを削除するために追加します。

android {
  ...
  packagingOptions {
    exclude '/lib/assets/geoviz/fonts/DroidSansFallback.ttf'
    exclude '/lib/assets/geoviz/NotoSansJP-Regular.otf'
  }
  ...
}

フォントを削除する場合は、地図の言語を削除したフォント以外の言語に切り替えることをお勧めします。 マップラベルを表示するには、少なくとも 1 つのフォントを残す必要があります。 削除されたフォントの言語でラベルを表示する必要があるたびに、欠落している文字ごとにエラーメッセージが記録されます。

フォントファイルのサイズは、数百キロバイトから数メガバイトの範囲になることがあります。 選択したフォントを削除すると、アプリケーションがデバイスにインストールされたときに消費されるスペースが少なくなります。 これらの手順で節約できる最大容量は約 11 MB です。

地図の言語を設定します

地図で使用する言語をカスタマイズして、道路、都市、その他のマップ データのラベルを表示できます。 既定では、リージョンのローカル言語が使用されます。

HereMapController を使用して、 languageCodeprimaryLanguage として設定します。 これ null により、ワールドの言語が設定されます。または、デフォルトの動作に戻すように設定されます。 言語が世界のどの地域でもサポートされていない場合は、その地域のローカル言語が代わりに表示されます。

地政学的見解

HERE SDK では、複数の地理的な政治的見解および異議を申し立てた境界をサポートしており、国際ビュー(デフォルト)またはローカルの国ビューに基づいてマップの境界を表示します。 ローカルビューは、 2 つ以上の政治組織(通常は国)が国境および所有権または支配権を主張する場合に、地図上の特定の領域にのみ影響を与えます。

politicalView 経由でアクセスできるメンバーの 3 文字の言語コードを設定することで、デフォルトの地政学的ビューを変更 SDKOptionsできます。 サポートされている国コードは 、カバレッジページからアクセスできます。

設定されている場合、マップ ビュー は設定されている国の地政学的な観点に基づいてすべての国の境界を表示 MapView し、によってそれに応じて境界が表示されます。

この機能はベータ版としてリリースされています。

実行時に地政学的ビューを変更する場合は、次のコード スニペット を使用します。

// Optionally, clear the cache, so that changing the options has an immediate effect.
SDKCache.fromSdkEngine(SDKNativeEngine.sharedInstance).clearAppCache((error) {
    if (error != null) {
       // ...
    }
});

var options = SDKNativeEngine.sharedInstance.options;
options.politicalView = "ARG";
await SDKNativeEngine.sharedInstance?.dispose();

// Now initialize the HERE SDK again using the new options.

新しいオプションを設定するには、新しい共有インスタンスを作成する必要もあるため、進行中の HERE SDK 操作ではこのオプションを呼び出さないでください。 理想 的には、アプリのライフサイクル中に HERE SDK を初めて初期化する前に、オプションとpoliticalView1 回のみ設定します。

マップ データの可用性

デフォルトでは、日本、中国、韓国などの世界の一部の地域には、限定的なマップ データ が含まれています。 マップ データ の全機能にアクセスするには、HERE の担当者に連絡してください。

マップ データ 形式

HERE SDK では、すべての種類のデータがマップタイルに保存されます。 これには、マップ ビュー でのレンダリングの目的で必要なデータが含まれている場合がありますが、これに限定されるものではありません。 たとえば、マップタイルには、マップ ビュー には表示されないが、ターン・バイ・ターンナビ (矢印ナビ) などの他の目的で必要な場所または道路の属性に関するデータも含まれています。

マップ タイル に保存されている情報は、交通情報やランドマークなどの個別のトピックの情報を保持する複数のレイヤーに分類されます。

Navigate Edition では、フードの下最適化されたクライアントマップ (OCM) カタログ形式を使用して、コンパクトで高速かつ柔軟なマップを提供しています。 OCM カタログは、 HERE Map Content ( HMC )からコンパイルされます。

OCM 形式では、使用されているすべてのデータをデバイスストレージに永続的に保存することも、マップキャッシュに一時的に保存することもできます。 このようにして、アプリケーションは、デバイスがオンラインかどうかに関係なく、同じ機能にアクセスできます。

Explore Edition 内部 では、オフラインユースケース をサポートしていない若干異なるマップ形式が使用されていることに注意してください。

オフラインの地図

すべてのマップ データは、使用前にプリロード ( アクティブまたは明示的なダウンロードとも呼ば れます ) することも、オンライン使用中にダウンロード ( パッシブまたは暗黙的なダウンロードとも呼ばれます ) することもできます。 いずれの方法もデータのダウンロードにはネットワーク接続が必要ですが、明示的な方法では、事前にデータを準備し、デバイスがネットワーク接続されていない場合にデータを消費することができます。また、暗黙的な方法ではキャッシュを使用します。キャッシュはマップの使用中に上書きできます。

一部の HERE SDK 機能では、 関連 する API リファレンス のマニュアルまたはこのガイドに示されているように、特定の地図バージョンが必要になる場合があります。

これは、キャッシュされたマップ データ にも関連します。次のセクションを参照してください。 地図バージョンの詳細については 、 HEREを参照してください。

CatalogConfiguration を使用してマップ データ をカスタマイズします

既定では、 HERE SDK は、特殊なマップ形式にコンパイルされたマップ データ を使用します。 このデータは、その場でマップキャッシュにダウンロードされるか、オフラインマップを使用して事前にダウンロードできます ( すべてのエディションで利用できるわけではありません ) 。 Explore Edition および Navigate Edition、 OCM マップ形式を使用します。

図: カスタムマップレイヤ。

マップは、マップデータを含むレイヤの集合です。 各レイヤには、ジオメトリとアトリビューションを持つマップオブジェクトが含まれます。 レイヤのコンテンツはタイルに分割され、効率的な検索、マップ表示、ルーティング、マップマッチング、 運転者の警告およびその他のデータ。 コアマップコンテンツは地域マップに分割されますが、常に単一のグローバルマップとして使用できます。 その他のコンテンツは、専用のマップ(ほとんどが世界地図)で配信されます。

このデータは HERE と一緒にカスタマイズでき、カスタムカタログからアクセスできます。 このサービスを利用すると、個人所有のデータ( BYOD )を当社に持ち込むことができます。 これを行うには、カタログの HERE リソースネーム 値と範囲を指定する必要があります。 また、オフラインの地図データと一致するように、ルーティングや検索などの特定の HERE オンラインサービスを適応させることもできます。 この場合、 HERE を使用すると、企業のために調整された HERE サービスをホストするカスタムバックエンドを設定できます。 このようなカスタムバックエンドは、EngineBaseURL を介して指定でき ます。次に、SearchEngine で開始されたすべてのリクエスト(たとえば、)がそのバックエンドを使用します。

カスタム CatalogConfiguration およびカスタムバックエンド URL は SDKOptions 、 HERE SDK が初期化されるたびに指定する必要があります。設定は保持されないためです。

最初に、開始するカタログバージョンを指定する必要があります。 は DesiredCatalog 、 HERE platform でカタログを識別する方法を提供します。 開発者は、カタログの HERE リソースネーム ( HERE リソースネーム )と CatalogVersionHint 、目的のバージョンのを指定することもできます。 設定が完了 MapUpdater すると、経由で定期的な地図更新を使用できます ( すべてのエディションで利用できるわけではありません ) 。 このカタログバージョンは、の一部として表示されます MapVersionHandle

このような設定を行うには、 HERE との特別な契約が必要です。 詳細については、 HERE の担当者にお問い合わせください。

HERE Map Attributes API を使用すると、HEREのすべてのマップデータと顧客のプライベートマップデータにアクセスできます。

DS プロキシを設定しています

既定 dsProxyでは、データサービスプロキシは " https://direct.data.api.platform.here.com/direct/v1" に設定されています。 カスタムカタログを使用する場合、 HERE SDK は内部的に参照リクエストを実行して、カタログにアクセスするための対応する URL を探します。 この追加の要求をバイパスするには、 HERE SDK の初期化時に URL を事前に設定することを推奨します。

たとえば dsProxy 、カスタムカタログの有効なは次のようになります。"https://data.api.platform.yourcompany.com/direct/v1" 。

カスタムプロキシビアーをEngineBaseURL設定 し 、 HERE SDK を初期化するときにcustomEngineBaseUrlsと同じようにSDKOptions渡します。

dsProxyは ネットワークプロキシ設定ではありません : カタログにアクセスするための URL のみを指定します。 カスタムカタログ設定 ( 上記を参照 ) をロードしない場合は、この設定を無視できます。

地図を自動更新します

アプリケーションを起動するたびに、最新の地図バージョンに自動的に更新できますか? はい、地域がインストールされていない場合に可能です。 地域をインストールしている場合は、mapUpdater.updateCatalog()を使用して更新する必要があり ます。 「オフラインマップ 」セクションを参照してください。 地域がインストールされていない場合は、を設定して更新できます CatalogVersionHint

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

CatalogVersionHint.latest(ignoreCachedData);

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

String defaultOCMHRN = "hrn:here:data::olp-here:ocm";

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

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

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

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

マップをダウングレードします

マップバージョンをハード選択することもできます。 たとえば、特定のカタログバージョンから開始する場合(現在のカタログバージョンよりも古い場合でも)。

CatalogVersionHint.specific(57);

その後、HERE SDKを初期化する際には、前のセクションで説明した手順と同じ手順を実行してください。

キャッシュされたマップ データ または永続化されていない ( インストールされているリージョン ) がある場合にのみ有効です。 たとえば clearCache()SDKCache インスタンスでを呼び出して、アプリ を終了する前にキャッシュを消去できます ( 以下を参照 ) 。

初めてインストールする場合は、マップビューを表示する前とルートデータをプリフェッチする前に、この操作を行う必要はありません。

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

地図のキャッシュを調整します

オンラインおよびオフラインのユースケースをより適切にサポートするために、 HERE SDK はダウンロードされたベクターマップ データのキャッシュをサポートしています。 これはバックグラウンドで発生します。 地図の操作中、データはローカルのデバイスに保存され、デバイスの接続が失われたり、オフライン モードで操作されたりした場合でもアクセスできます。

統合されたマップキャッシュメカニズムは、標準的なベクトルベースのマップスキームをサポートしています。衛星イメージやその他のラスタタイルもキャッシュされますが、設定できない別のキャッシュに保存されます。

キャッシュされるデータの量は制限され、地図の使用中に新しいマップ データで上書きされます。 ほとんどの場合、アプリを以前と同じ場所で再起動したときに追加のデータをダウンロードする必要がないため、これでユーザーは起動時間が短縮されたように感じることができます。

キャッシュがいっぱいになる と、 LRU ( Least Recently Used )方式が適用されます。

を使用して HERE SDK を手動で初期化する場合、キャッシュパスと最大サイズを指定 SDKOptionsできます。 キャッシュパスは Info.plist 、または AndroidManifest ファイルを使用して設定することもできます。 詳細については、「エンジン」セクションを参照してください。

注 : 顧客のラスタレイヤには、別のキャッシュを定義できます。

マップキャッシュを消去するには、次の手順を実行します。

SDKCache.fromSdkEngine(SDKNativeEngine.sharedInstance).clearAppCache((error) {
    if (error != null) {
       // ...
    }
});

を廃棄 SDKNativeEngine.sharedInstanceしても 、キャッシュは消去されません。

空の文字列をキャッシュパスとして設定すると、デフォルトのキャッシュパスが保持されます。このパスには SDKNativeEngine.sharedInstance?.options.cachePath、次の方法でもアクセスできます。

// Specify credentials programmatically and keep default cache path by setting an empty string.
SDKOptions sdkOptions = SDKOptions.withAccessKeySecretAndCachePath("YOUR_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_SECRET", "");

ターン・バイ・ターンナビ (矢印ナビ) ではキャッシュが必要なため、を作成する場合は有効なキャッシュパスが必要 SDKNativeEngineです。

AndroidManifestファイル( アプリの Android フォルダ)またはInfo.plist( アプリの iOS フォルダ)からキャッシュパスを指定することもできます。 SDKNativeEngine 例については、 API リファレンス を参照してください。

オフラインの地図とは関係なく、地図キャッシュを新しいバージョンの地図に更新できます。 マップ mapUpdater.performMapUpdate() キャッシュを呼び出すと、 Region インストールされていない場合でも、新しいバージョンに更新されます ( 利用可能な場合 ) 。 オフラインの地図が利用可能な場合、以前と同様に地図キャッシュと一緒に更新されます。 キャッシュの更新後にオフラインの地図がインストールされた場合は、同じ地図バージョンが使用されます。 マップキャッシュ オフラインマップに異なるバージョンを使用することはできません。

マップビューのパン中に最新の地図データを取得するには、更新が利用可能かどうかを確認してからインストールします。 オフライン Region マップがインストールされていない場合は、数秒しかかかりません。 は MapVersionHandle 、現在使用されているマップバージョンを示します。

アプリケーションを新規インストールする場合、最新の地図バージョンが使用されているとは限りません。 通常、各 HERE SDK リリースには特定のマップバージョンが付属しています。 ただし、 ( カスタム ) CatalogConfiguration を使用している場合 は、アプリ のインストール直後に使用するマップバージョンを指定できます。たとえば、DesiredCatalog最新のマップバージョンを指定します。

地図のバージョン、キャッシュ、およびオフライン地図の詳細 については、「オフライン地図」セクションを参照してください。

経由 SDKOptions で、キャッシュの有効期限を指定することもできます。 時間を 0 に設定すると、アプリ がキャッシュにデータを保存できなくなります。 オフラインのリージョンがインストールされていない場合、 - デバイスの接続が失われたとき - デバイスが再びオンラインになるまでマップは表示されません。 これにより、常に最新で最大のマップ データ を表示できるとは限りません。 この場合も、地図の更新が利用できるかどうかを確認する必要があります。

地図キャッシュに関する質問と回答

  • マップ タイル とは 地図のタイルは地図キャッシュに保存されます。 マップ タイル には、検索とルーティングに関連するデータと、ビジュアルリプレゼンテーションのベクトルデータが含まれています。 最適 化されたクライアントマップ( OCM ) 形式で保存されます。 地図のタイルは、さまざまなズームレベルで使用できます。 マップ タイル には、ズーム レベル によって異なるデータが含まれている場合があります。

  • 地図キャッシュ内のデータが失われた場合、どのような影響がありますか? 通常、マップキャッシュが完了しているとは見なされず、周囲の領域にタイルが失われることがあります。 これは、マップタイルがレンダリングされている間にオンデマンドでのみロードされるためです。 地図キャッシュに不足しているタイルがある場合 OfflineSearchEngine 、たとえば、が不足しているタイルの一部である POI や道路名を見つけられず、 HERE Rendering Engine はそのようなデータをレンダリングできません。 また、 OfflineRoutingEngine 不足しているタイルの周りにルートが見つからない場合、が失敗することがあります。 OfflineSearchEngine および OfflineRoutingEngine は、すべてのエディションで使用できるわけではありません。

  • マップキャッシュのサイズを指定してください。 マップキャッシュのサイズは、アプリケーションによって変更できます。 256 MB 以上を使用してください ( デフォルト ) 。 512 MB 以上または 1 GB を推奨します。 ターン・バイ・ターンナビ (矢印ナビ) (などで利用可能 Navigate Edition)の場合、ズーム レベル 14 の地図タイルが必要です。このタイルは、約 2 km の円に相当します ただし、場所によって多少異なる場合があります。

  • キャッシュの削除ポリシーは何ですか ? HERE SDK は LRU ( Least Recently Used タイル )ロジックを使用して、マップキャッシュがいっぱいになったときにタイルを削除します。 たとえば、現在の場所から離れた場所にあるタイルなど、削除する高度なロジックはありません。ユーザーが次に訪問する可能性のある世界の領域は予測できないからです。 ただし、マップキャッシュは セッション固有のものではありません。このキャッシュのデータは、最後の電源サイクルから最後にデバイスが使用されたときからのものであり、次回アプリ が使用されたときからまだ残っています。 キャッシュは、デバイスごとではなく、アプリ ごとに固有のものであることに注意してください。

  • キャッシュ済みのマップ タイル はオフラインで検索できますか ? はい、では常に検索できます OfflineSearchEngine。 ただし、すべてのマップ タイル にすべてのズーム レベル の同じ検索結果が含まれているわけではありません。 は OfflineSearchEngine 、すべてのエディションで使用できるわけではありません。

  • 一度にキャッシュされるマップ タイル は 1 つだけですか ? はい。位置が 2 つのタイルの端にない限り、一度に追加できるタイル は 1 つだけです。 ズーム レベル によっては、マップ ビュー のレンダリングに複数のタイルが必要になります。この処理は、ズーム レベル が変更された場合にのみ自動的には行われません。

  • 衛星画像はキャッシュされていますか? はい。衛星マップ スキーム が設定されている場合、対応する画像もキャッシュされますが、衛星画像は 90 日後(契約上の理由により)使用できず、削除されます。 この場合、 HERE SDK は利用可能な新しい衛星マップタイルがあるかどうかを確認し、ある場合はキャッシュ内のイメージが自動的に更新されます。 画像が変更されていない場合は、タイムスタンプ のみが更新され、この確認後 90 日間画像を再利用できます。 ただし、 LRU 戦略は引き続き適用されます。 非衛星の地図タイル は、キャッシュがいっぱいの場合にのみ削除されます。古いタイルの古さや、時間に基づいて古いタイルが自動的に削除されることはありません。

  • 地球儀のような「ベース マップ 」はいつでも利用できますか? HERE SDK は、自動的に世界のタイル、つまり世界で最も多いズーム レベル タイルをダウンロードします。 これは、レンダリングの目的で非常に限られた量の情報を使用して、世界中で利用できるマップが常に存在することを意味します。 国や大陸の形が表示され、大文字がテキストラベルで表示されます。

  • キャッシュは自動的に消去されますか ? いいえ、フルキャッシュは LRU 戦略に基づいてのみ消去されます ( 上記を参照 ) 。 接続が中断されたためにタイルが完全にダウンロードされていない場合、これらのタイルは保持され、接続が再開されたときにダウンロードが続行されます。

  • 接続が利用可能な場合、ルート全体が事前にキャッシュされますか。 いいえ、自動的には発生しません。 ただし、を使用し RoutePrefetcher て、ルート経路沿いのキャッシュにマップ データ をダウンロードできます。 詳細については、ターン・バイ・ターンナビ (矢印ナビ) セクションを参照してください。 は RoutePrefetcher 、すべてのエディションで使用できるわけではありません。

HERE Logo Watermark

HERE SDK を使用する場合は、 HERE ロゴがマップ ビュー に常に表示されていることが必要です。 既定では、 HERE ロゴは地図の右下隅にあります。 ただし setWatermarkLocation() 、マップ ビュー コントローラでを呼び出すことで、アプリ の設計に合わせてその場所を簡単にカスタマイズできます。 UI 要素が重複しているために必要な場合にのみ、既定の配置を変更することをお勧めします。 非常に小さいビューの場合の注意 : 地図の両端の濃度が 250 の独立したピクセルサイズ未満の場合、透かしは自動的に非表示になります。

HERE との特別な合意がある場合にのみ、 HERE ロゴを削除できます。

CarPlay および Android Auto のサポートを追加します

現在、 Flutter プラットフォーム は 、 Apple の CarPlayAndroid Auto、 および Android Automotive直接サポートしていません

CarPlay および Android Auto をネイティブの HERE SDK バリアントで実装する方法については、以下を参照してください。

iOS および Android 用のネイティブ SDK は、 HERE SDK for Flutter ダウンロードパッケージに含まれている Flutter プラグイン フォルダの一部としてすでに含まれています。 ただし、ネイティブコードにアクセスする場合は、 HERE SDK を統合する必要があります。 たとえば、 Android では、アプリ build.gradle のファイルのプラグイン フォルダーに表示される AAR の名前を追加する必要があります。 iOS にも同様の手順が必要です。 次に、 Java 、 Kotlin 、または Swift のソースファイルからネイティブ HERE SDK API にアクセスできます。

マップ ビュー のビット処理を簡素化するため に、 HERE SDK の一部である次のネイティブクラスMapSurfaceHost.ktMapViewHost.ktMapViewHost.swiftにアクセスできます。 現時点では、これらは 今後 通知があるまで試験的に使用することのみを目的としています。 MapView Swift や MapSurface Java などのネイティブビューごとにこれらのホストクラスを使用 HereMapController すると、 DART 側からを介してネイティブビューを制御できます。

Java の使用例 :

import com.here.sdk.mapview.MapSurface;
import com.here.sdk.mapview.MapSurfaceHost;

...
MapSurfaceHost surfaceHost = new MapSurfaceHost(123, flutterEngine.getDartExecutor().getBinaryMessenger(), mapSurface);

Swift の使用例 :

import heresdk
import here_sdk

...
let mapViewHost = MapViewHost(viewIdentifier: 123,
                              binaryMessenger: FlutterBinaryMessenger,
                              mapView: MapView)

次に、 DART 側で同じビュー ID 「 123 」を使用します。例 :

methodChannel.setMethodCallHandler((call) async {
  if (call.method == 'mapCreated') {
    print('ExampleApp - map surface created');

    HereMapController mapSurfaceController = HereMapController(123);
    bool success = await mapSurfaceController.initialize((event) {});
    if (!success) {
      print('ExampleApp -Failed to initialize controller');
      return;
    }

    mapSurfaceController.mapScene.loadSceneForMapScheme(MapScheme.normalNight, (MapError? error) {
      ...
    });
  }

これには、 Android の Auto または CarPlay 機能は含まれていません。 現時点では、車内にタッチディスプレイがある場合でも、作成されたサーフェスはどのジェスチャにも反応しません。

」に一致する結果は 件です

    」に一致する結果はありません