地図を使用します
HERE SDK for iOS の主要な機能の 1 つ がマッピングです。マッピングには、マップ ビューの追加、マップに表示される場所の変更、およびそのプロパティの変更が含まれます。 マッピング API の主なコンポーネントはマップ ビュー UIView
です。このコンポーネントはサブクラスとして統合されています。 マップ ビューは 、 マップおよびさまざまなプロパティを表示するためのベクトルベースのビューを表します。
HERE Map Data は 毎週更新 され、常に最新のマップ データを利用できるようになっています。 マップ ビューを統合することで、このメリットを自動的に享受できます。 地図がベクトルベースである間 、他のプロバイダのカスタム地図タイルを統合することもできます。
メモ
簡単なマップアプリケーションを作成する場合 は、はじめにの項を参照してください。
地図とそのプロパティを操作するには、まず [ カメラ ] セクションを確認することをお勧めします。 その他の機能 :
- 一般的なマップジェスチャや、パニングや回転などのデフォルトのマップビヘイビアーを処理するためのマップジェスチャ。
- サテライトと通常のマップ レイヤーなどの既定のマップスタイルを瞬時に切り替えるマップスキーム。
- アイテムをマップ して、オブジェクトと図形をマップに配置し、それらを操作します。
- カスタムサーバーイメージを追加のマップ レイヤーとして表示するカスタムのラスタータイル。
- 既存 のマップスキームの外観を完全にカスタマイズするカスタムマップスタイル。
必要に応じて、ローエンドデバイスのパフォーマンスを改善するためのオプションがいくつかあります。
たとえば、レンダリングする要素が少ないカスタムマップスタイルを作成できます。 マップ ビューでレンダリングされる要素が多いほど、 GPU によって消費される処理能力が高くなります。 地図上に複数の POI をレンダリングする場合は、ネイティブプラットフォームでレンダリングする方が重い MapOverlay
インスタンスなどのネイティブビューではなく、 MapMarkerLite
インスタンスを使用することをお勧めします。
別のオプションとして、 HERE SDK フレームワークのサイズを縮小することもできます。 未使用のフォント は、アプリケーションを出荷する前に削除できます。
地図スキームを読み込みます
HERE SDK では、いくつかの事前設定済みのマップスキームがサポートされ
マップ レイヤーのセクションで、衛星や通常のはじめになどの既定の地図スタイルを瞬時に切り替える方法を確認してください。
地図レイヤーを追加します
HERE SDK では、マップスキームに加えて、現在のトラフィックフローなどの追加情報を表示する特定の種類のレイヤーを追加できます。 「交通状況」 セクションで例を確認してください。
未使用のフォントファイルを削除します
HERE SDK には、中国語、日本語、韓国語でマップラベルをレンダリングするためのフォントが含まれています。 アプリ全体のサイズを最適化する場合は、選択したフォントを削除できます。 たとえば、Chinese
Japanese
と Korean
文字を使うフォントには、簡体字中国語 (GB2312)、繁体字中国語 (ビッグ 5)、日本語 (JIS 0208)、韓国語 (KSC 5601) のサポートが含まれています。 このフォントでは、共有の Unicode コードポイントに簡体字中国語の表意文字が使用されます。 このフォントを削除するには heresdk.framework
、ファイルを開き、次のファイルを削除します。
style/fonts/DroidSansFallback.ttf
style/fonts/DroidSansFallback.license
フォントを削除する場合は、地図の言語を中国語、日本語、韓国語以外の言語に切り替えることをお勧めします。
地図の言語を設定します
地図で使用する言語をカスタマイズして、道路、都市、その他のマップ データのラベルを表示できます。 既定では、リージョンのローカル言語が使用されます。
マップ シーンをロードするときに、フィールドmainLanguageCode
およびfallbackLanguageCode
を使用してMapSceneConfig
経由で目的の地図言語を指定します。 fallbackLanguageCode
目的の言語が世界のどの地域でも利用できない場合に使用されます。 両方のフィールドをに設定 nil
して、既定の動作に戻します。
地政学的展望
HERE SDK では、複数の地理的な政治的見解および異議を申し立てた境界をサポートしており、国際ビュー(デフォルト)またはローカルの国ビューに基づいてマップの境界を表示します。 ローカルビューは、 2 つ以上の政治組織(通常は国)が国境および所有権または支配権を主張する場合に、地図上の特定の領域にのみ影響を与えます。
politicalView
経由でアクセスできるメンバーの 3 文字の言語コードを設定することで、デフォルトの地政学的ビューを変更 SDKOptions
できます。 サポートされている国コードは 、カバレッジページからアクセスできます。
設定されている場合、マップ ビュー は設定されている国の地政学的な観点に基づいてすべての国の境界を表示 MapView
し、によってそれに応じて境界が表示されます。
この機能はベータ版としてリリースされています。
実行時に地政学的ビューを変更する場合は、次のコード スニペット を使用します。
SDKCache.fromEngine(SDKNativeEngine.sharedInstance!).clearCache { (error) in
if error == nil {
}
}
var options: SDKOptions? = SDKNativeEngine.sharedInstance?.options
options?.politicalView = "ARG"
新しいオプションを設定するには、新しい共有インスタンスを作成する必要もあるため、進行中の HERE SDK 操作ではこのオプションを呼び出さないでください。 理想 的には、アプリのライフサイクル中に HERE SDK を初めて初期化する前に、オプションとpoliticalView
を 1 回のみ設定します。
マップ データの可用性
デフォルトでは、日本、中国、韓国などの世界の一部の地域には、限定的なマップ データ が含まれています。 マップ データ の全機能にアクセスするには、HERE の担当者に連絡してください。
地図のキャッシュを調整します
オンラインおよびオフラインのユースケースをより適切にサポートするために、 HERE SDK はダウンロードされたベクターマップ データのキャッシュをサポートしています。 これはバックグラウンドで発生します。 地図の操作中、データはローカルのデバイスに保存され、デバイスの接続が失われたり、オフライン モードで操作されたりした場合でもアクセスできます。
統合されたマップキャッシュメカニズムは、標準的なベクトルベースのマップスキームをサポートしています。衛星イメージやその他のラスタタイルもキャッシュされますが、設定できない別のキャッシュに保存されます。
キャッシュされるデータの量は制限され、地図の使用中に新しいマップ データで上書きされます。 ほとんどの場合、アプリを以前と同じ場所で再起動したときに追加のデータをダウンロードする必要がないため、これでユーザーは起動時間が短縮されたように感じることができます。
キャッシュがいっぱいになる と、 LRU ( Least Recently Used )方式が適用されます。
を使用して HERE SDK を手動で初期化する場合、キャッシュパスと最大サイズを指定 SDKOptions
できます。 キャッシュパスは Info.plist
ファイルを介して設定することもできます。 詳細については、「エンジン」セクションを参照してください。
マップキャッシュを消去するには、次の手順を実行します。
SDKCache.fromEngine(SDKNativeEngine.sharedInstance!).clearCache { (error) in
if error == nil {
}
}
の共有インスタンスを SDKNativeEngine
に設定 nil
しても 、キャッシュは消去されません。
を使用して、キャッシュされたデータを消去することもでき MapViewLite
ます。
空の文字列をキャッシュパスとして設定すると、デフォルトのキャッシュパスが保持されます。このパスには SDKNativeEngine.sharedInstance?.options.cachePath
、次の方法でもアクセスできます。
let cachePath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path ?? ""
let sdkOptions = SDKOptions(accessKeyId: "YOUR_ACCESS_KEY_ID",
accessKeySecret: "YOUR_ACCESS_KEY_SECRET",
cachePath: cachePath)
Info.plist
ファイルからキャッシュパスを指定することもできます。 SDKNativeEngine
例については、 API リファレンス を参照してください。
地図キャッシュに関する質問と回答
-
マップ タイル とは 地図のタイルは地図キャッシュに保存されます。 マップ タイル には、検索とルーティングに関連するデータと、ビジュアルリプレゼンテーションのベクトルデータが含まれています。 最適 化されたクライアントマップ( 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 ロゴは地図の右下隅にあります。 ただし setWatermarkPosition()
、マップ ビューインスタンスでを呼び出すことで、アプリの設計に合わせてその場所を簡単にカスタマイズできます。 UI 要素が重複しているため、必要な場合にのみ既定の配置を変更することをお勧めします。 非常に小さいビューの場合の注意 : 地図の両端の濃度が 250 の独立したピクセルサイズ未満の場合、透かしは自動的に非表示になります。