マップを使用
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 つ以上の政治組織(通常は国)が国境および所有権または支配権を主張する場合に、マップ上の特定の領域にのみ影響を与えます。
SDKOptions
経由でアクセスできる politicalView
メンバーの 3 文字の言語コードを設定することで、デフォルトの地政学的ビューを変更できます。サポートされている国コードは、カバレッジページからアクセスできます。
設定すると、マップ ビューには設定されている国の地政学的見解に従ってすべての国の境界が表示され、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 )方式が適用されます。
SDKOptions
を使用して HERE SDK を手動で初期化する場合、キャッシュパスと最大サイズを指定 できます。 キャッシュパスは 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 の独立したピクセルサイズ未満の場合、透かしは自動的に非表示になります。
注
HERE との特別な合意がある場合にのみ、 HERE ロゴを削除できます。