移行ガイド

このガイドラインでは、別の HERE SDK エディションから Explore Edition または Navigate Edition に移行するための一連の手順を示します。 Navigate Edition のすべての機能Explore Edition で利用できるわけではありません。 Explore EditionNavigate Editionサブセットです。

マップボックスや Google マップなどの別の SDK から移行する場合 は、「主な概念」セクションを参照することをお勧めします。 HERE LiteExplore & Navigate の各エディションで統一された、最も一般的な概念を見つけることができます。 これらのエディションの違いについては、このガイドの「概要」セクションを参照してください。

簡単に確認できます

  • LiteExplore & Navigate の各エディションでは、プラットフォーム間を直接切り替えることができます。 Android 、 iOS 、 Flutter など、利用可能なすべてのプラットフォームが、フードの下にある同じネイティブコードベースを共有します。 このようにすると、利用可能な HERE SDK 機能がプラットフォーム間で一貫して動作するとともに、個々のプラットフォーム規則に忠実に適合します。 ただし、機能が異なると、 API および動作が異なる場合 があります。たとえば、 HERE Rendering Engine の動作がライトレンダラーとは異なるため、MapViewLiteコンポーネントには若干異なる API が含まれています。 主な相違点の詳細を以下に示します。

  • StarterEdition と Premium Edition は、異なるテクノロジスタックを共有しています。 その結果、ほとんどの API 、概念、および動作が、新しい LiteExplore & Navigate Edition と異なります。 このためには、より一貫した移行の計画が必要になる場合があります 可能な手順を以下に示します。 Starter Edition および Premium Edition は廃止されました。

  • HERE SDK for iOS (Lite Edition)は廃止されました。 代わりに、 Explore Edition または Navigate Edition を使用してください。

概要

非常に小規模なプロジェクトを除き、アプリをあるエディションから別のエディションに移行するには時間がかかるため、顧客に重大な変更が生じる可能性があります。労力を最小限に抑えるために、増分アプローチを推奨します。

  1. 作業を開始する前に、フィーチャーの可用性についての詳細を確認してください。 HERE SDK の開始ページにある「 HERE SDK の機能比較」の一覧を参照してください。 対象のエディションの機能を利用できない場合は、HERE の担当者にお問い合わせください。 次回の定期リリースのいずれかですでに予定されている可能性があります。

  2. 新しいエディションで利用可能なプランを確認してください。 HERE SDK の使用を自由に開始できます。 利用可能なプランの概要については、価格表を参照してください。 プランの詳細については、FAQ を参照してください。

  3. HERE の担当者に新しい資格情報のセットをリクエストしてください。 資格情報 は、エディション間で交換できません。 現在 のところ、 Navigate Edition はリクエストを受けた場合にのみ利用できます。

  4. 移行を開始します。 詳細については、以下のセクションで説明します。

情報

その他の役立つヒント :

  • フィーチャーの比較 : 以下のサンプルアプリのセクションで は、 4.x の機能と比較して 3.x の主な機能を示すマッピングテーブルを見つけることができます。このテーブルには、前述の各機能の再利用可能なコードスニペットへのリンクが含まれています。

  • 4.x のフィーチャーを検索 : リリース ノート ページ では、 1 日目以降にリリースされたすべてのフィーチャーまたは API 1 つのページに表示できます。 テキスト検索 (STRG + F/command + F) を使用して、検索するフィーチャーに一致する可能性があるものを検索します。 ほとんどの場合、リリース ノートには、最初のオリエンテーションを提供するための簡潔な指示が含まれています。 この 開発者ガイド または API リファレンス で、詳細情報を参照します。

  • 使用例 : また、 以下のフィーチャー 一覧、またはこの開発者ガイド Q&A セクションで考えられる使用例を一覧表示することもできます。

移行戦略

アプリの複雑さによっては、最初から始める必要がない場合があります。 代わりに、既存のプロジェクトのコピーを作成して、フィーチャーの移行を段階的に開始することをお勧めします。

アプリの移行を正常に完了するには、いくつかの方法があります。 次のいずれかの方法を使用できます。

  1. 古い SDK フレームワークを最初に非統合化します。

  2. 次に、「はじめに 」セクションに従って、新しい SDK フレームワークを統合します。

  3. 最後に、新しい API に適応してテストを開始することで、レガシーコードの残りのコンパイルエラーを修正します。 単体テストと統合テストが役立つ場合があります。

大規模なプロジェクトでは、分離されたプロジェクトを作成して、新しい SDK でコードを事前にテストできます。 これにより、 必要なすべてのフィーチャーが移行される前に、新しい動作が期待どおりかどうかを確認できます。

ヒントとして、コードがインターフェイスに対して実装されている場合に、特定のライブラリ からコードを分離しておくと役立ちます。 このようにすると、ライブラリ の統合が解除された後に無数のコンパイルエラーが発生するのではなく、レガシーコードをコメント化して機能的に置き換える方が簡単になります。

2 つの異なるエディションを同じアプリに統合することはできません。そのため、コンパイル時に重複エラーが発生するクラスもあります。

さらに、 4.x 開発者ガイドについても理解しておく必要があります。 すべてのコアフィーチャーのコーディング例をカバーするほか、リリースに合わせてアプリケーションを最適化する方法についてのヒントも含まれています。 詳細については、 最適化ガイドを参照してください。

各エディションで必要な移行手順の詳細については、以下を参照してください。

Exploreから Navigate Edition へ移行

移行作業は不要です。 Explore EditionNavigate Edition のサブセット であるため、コードは以前と同様にコンパイルされ、動作します。 フレームワークフォルダー(通常はアプリのフォルダー内に配置されます)を置き換え、新しい資格情報を Info.plist ファイルに挿入するだけで済みます。 HERE の担当者に新しい資格情報をリクエストしてください。 現在 のところ、 Navigate Edition はリクエストを受けた場合にのみ利用できます。

Lite から Explore Editionへ移行

次のセクションをお読みください。 Explore EditionNavigate Editionサブセットです。 アプリの libs フォルダー内のライブラリ を置き換える必要がありますが、同じ資格情報 を保持できます。 Lite Edition および Explore Edition の資格情報 は交換可能です。

Lite から Navigate Edition へ移行

Lite Editionが軽量のマップレンダラーを使用するため、マップ ビューに関連するすべてのコードを調整する必要がある場合があります。Navigate Edition に切り替える場合、HERE Rendering Engine の強力なフィーチャーを利用するには、MapViewLiteMapViewに置き換える必要があります。 幸いなことに、他のすべてのコードは、すでに Navigate Edition と同じネイティブコードベースを共有しているため、同じ状態を保つことができます。

  1. MapViewLiteMapViewに置き換えて開始します。

  2. 利用開始 』ガイドに従って、マップ ビューを正しくロードします。 Lite Edition とほぼ同じです。

  3. *.storyboard を使用してマップ ビューを統合する場合は、 MapViewLite のすべてのオカレンスを MapView で置き換えます。 「ソースコードとして」ファイルを開き、すばやく検索して置き換えます。

  4. Lite Edition で使用できるスキームMapStyle は 、MapSchemeスタイルに置き換えられます。 .normalDay スタイルと .satellite スタイルは両方のエディションで使用できます。 API リファレンス で 利用できる追加の定義済みマップスタイルについては、 Navigate Edition を参照してください。

  5. カスタムマップスタイルは、異なるスタイル形式を使用し、互換性がありません。 HERE Style Editor の高度な機能の詳細については、「カスタムマップスタイル」を参照してください。

  6. すぐに使用できるコードスニペットを取得し、マップ ビューにアイテムを追加する方法については、「マップアイテム」セクションを参照してください。 Navigate Edition は、Lite Edition と同じマップアイテムのセットをサポートしています。MapOverlayビューの名前がMapViewPinに変更されました。 Lite Editionで利用できる一部のフィーチャーは 、 Navigate Edition ではまだ利用できません。たとえば、アイテムの回転MapMarkerはだサポートされていません。 上記のセクションでは、現在利用可能なものの概要を示します。

  7. Navigate Edition で利用できる相違点と高度な機能については、「カメラ」セクションを参照してください。 MapCameraでは、 3D カメラの完全な制御と、よりエキサイティングなフィーチャーを利用できます。

Navigate Edition にはズームレベルもありますが、実際の詳細レベルは異なる場合があります。 Navigate Edition のマッププロジェクションでは、メルカトル図法ではなく地球投影法が使用されます。 さらに 、 Navigate Edition は地球からの距離を使用して、より正確な結果を得ることができるように、カメラをマップの上に配置します。 既存の Lite ズーム レベルの値をメートル単位の距離に変換するには、次の近い方の数式を使用します。

let distanceToEarthInMeters = pow(2, 16.251628683 - zoomlevelFromLite)

移行を支援するために、GitHubExplore Edition または Navigate Edition にすでに移植されている Lite Edition で利用可能なサンプルアプリと同じセットを見つけることができます。

Premiumから Explore Edition へに移行

次のセクションをお読みください。 Explore EditionNavigation Editionサブセットです。 Explore Edition および Navigate Edition の資格情報は交換できませんExplore Edition の場合、「利用開始」の項で説明されているように、セルフサービスを介して資格情報を取得できます。

Premiumから Navigate Edition へ移行

他のエディションとは異なり 、 Starter および Premium Edition はまったく異なるテクノロジスタックを共有 しているため、新しい SDK エディションの LiteExplore & Navigate は完全に最初から構築されています。 その結果、 API 、概念、および動作が異なります。

その結果、 1:1 の変換はできません。

主な違いを把握 するには、機能のエントリポイントを確認してください。 移行を計画する場合は、移行の前後にアプリをテストするための十分なリソースを計画してください。

この 開発者ガイドで説明され ている使用例に従って、概要を確認してください。 また、 「主な概念」セクションも参照してください。 HERE LiteExplore & Navigate の各エディションで統一された、最も一般的な概念を見つけることができます。 保険料とナビゲーションの相違点 のセクションを確認して、並べて比較してください。

多くの場合、 Premium から Navigate Edition への移行は、基本的なマップの初期化から開始できます。 マップの初期化の移行が完了すると、アプリケーションで利用できる他の機能を続行できます。

GitHubNavigate Edition で利用できるサンプルアプリのセットを見つける ことができます。

Starter Edition は サブセットであるため、この移行ガイドには明示的に含まれていません。 ただし、 以下のほとんどのセクションは、 Starter からNavigate Edition に移行する場合 、または Navigate Edition ではなく Explore Edition に移行する場合にも適用できます。

注 : 重要

この移行ガイドでは 、 両方のエディションの複雑さと多様性により、 Premium EditionNavigate Edition の 1:1 の比較については説明していません。 代わりに、一般的な概念とパターン、および相違点に焦点を当てて、利用開始に大まかなガイドラインを提供します。

  • ほとんど の場合、コードを 1 行ずつ変換するのではなく、古いコードを完全に削除して Navigate Edition 機能から新しいコードを挿入する方が簡単です。

  • このためには 、この開発者ガイドまたは GitHub に示されているさまざまな使用例から取得できる適切なコードスニペットを探すことが最善の方法です。 上記の「移行の計画」も参照してください。

移行すべき理由

新しい Lite,Explore & Navigate エディション は、最新の HERE テクノロジスタックをサポートするように、完全に一から構築されています。 Starter および Premium Editionと比較すると、次の利点があります。

  • マイクロサービスとモジュール化されたコンポーネントを組み込んだ HERE platform からのデータを利用することで、ほとんどの場合、 1 つのエディションから別のエディションへのシームレスな切り替えが可能になります。
  • 最適化されたサイズとパフォーマンス。
  • 高度なマップレンダリングおよびカスタマイズ機能。
  • 毎週更新されるフレッシュなマップ データ。
  • 新しいエディションでのみサポートされている新しい HERE platform サービスを利用できます。

4.x 専用のフィーチャー :

  • 個人データの持ち込み( BYOD )のサポート。
  • カスタムバックエンドおよびマップカタログのサポート ( セルフホスティング ) 。
  • 日本などの新しい市場のサポート。
  • 電気自動車のサポート。

フィーチャー・一覧

作業を開始する前に、各エディションで利用できる個々のフィーチャーの詳細について確認してください。 HERE SDK の開始ページにある「 HERE SDK のフィーチャー比較」の一覧を参照してください。 さらに、より詳細なNavigateフィーチャーのリストを、各ユーザーガイドの一部として利用できるPremiumフィーチャーのリストと比較します。

Navigate Edition で機能が利用できない場合は、HERE の担当者にお問い合わせください。 次回の定期リリースのいずれかですでに予定されている可能性があります。

実装されていないフィーチャー

Premium Edition と比較して、 Navigate Edition にまだ実装されていないフィーチャーがいくつかあります。 これには、次のものがあります

  • 環境ゾーンの警告 : 2023 年第 2 四半期に出荷予定。
  • ドットを使用したポリラインスタイル : 2023 年第 2 四半期に出荷予定。

これらの機能のいずれかがアプリ に不可欠な場合は、まだ移行しないことを検討してください。

HERE の営業担当者に連絡して、今後リリースされる機能の最新のアップデートタイムラインを確認することをお勧めします。

3.x Premium Edition の次のフィーチャー は非推奨なので、廃止されました。

  • 電子ホライズン : HERE では、 3.x Premium Edition の電子ホライズンを 車両制御に統合すること、および現在の ADASIS v2 プロトコルを直接使用することは、契約によって許可されていません。 代わりに、HERE SDK チームは潜在的な経路計算ツールを公開して、運転に関連するイベントを前もって通知し、4.x Navigate Edition で同じユースケースを作成できるようにする予定です。
  • オフラインの公共交通機関のルーティング : オフラインタイムテーブルルーティングの精度が十分でないため、このフィーチャーは廃止されました。 そのため、 4.x HERE SDK では、公共交通機関への経路情報の取得は オンラインモードでのみサポートされています。
  • Objective-C: 現在、 Objective-C はサポートされていません。また、ブリッジングヘッダーを使用することはできません。 コードベースが Objective-C で記述されている場合は、 Swift への移行を検討してください。 ただし、既存の Objective-C プロジェクトに統合されている Swift ファイルから直接 HERE SDK にアクセスすることは可能です。 Swift Objective-C を 1 つのプロジェクトに混在させることはできますが、現在は Objective-C から直接 HERE SDK にアクセスできません
  • バックグラウンドレンダリング : この 3.x 機能は廃止され、 4.x HERE SDK ではサポートされません。 そのため、snapshotWithBlocksnapshotWithGeoCoordinates:zoomLevel:orientation:size:block: (NMAMapViewを参照) に対応する 4.x は使用できません。
  • TTS 用の録音済み音声 : 録音済みの音声ファイルは廃止されました。 4.x HERE SDK で は、 TTS エンジンをサポートするために複数の言語がサポートされていますが、これらのテキストは文字列としてのみ提供されます。そのため、開発者は、選択したエンジンでこれらのテキストを再生するプラットフォーム ソリューションを選択する必要があります。 ナビゲーションセクション に、この方法の例が表示されます。

フィーチャーの置き換え

3.x の次のフィーチャーは 4.x では直接サポートされていません。代わりに、代替の BYOD ( Bring Your Own Data )ソリューションが使用されます。 詳細については、各アカウント管理者にお問い合わせいただくか、 HERE サポートチームにお問い合わせください。

  • Custom Location Extension 2 ( CLE2) /CLE2 オフライン このフィーチャーは、検索およびジオ コーディング の BYOD に置き換えられました。 MyPlaces クラスを使用すると、カスタムデータをインポートできます。 新しい BYOD の概念の詳細について は、 4.x の検索ガイドを参照してください。
  • カスタムルーター拡張機能 : このフィーチャーは、 BYOD ユースケース をサポートするための新しいカスタムデータ概念に置き換えられました。これは、MyPlacesの検索およびジオ コーディング と同様です(上記を参照)。
  • プラットフォーム データ拡張 (PDE): この機能は、新しいカスタムデータ概念に置き換えられました。
  • Fleet Telematics カスタムルート (FTCR): このフィーチャーは、新しいカスタムデータ概念に置き換えられました。

資格情報

まず、新しい資格情報 を取得します。 Navigate Edition の場合、HERE の担当者に連絡して、一連の評価資格情報 を生成する必要があります。

Premium Edition とは対照的に、 Navigate Edition では異なるタイプの資格情報が使用されます。 アプリ ID 、トークン、およびライセンス ID は不要です。その代わり、次の 2 つの文字列が必要です。

  • アクセスキー ID
  • アクセスキーのシークレット

取得した資格情報は 、プラットフォームに関係なく Explore Edition で再利用できます。さらに、これらの資格情報を複数のアプリで使用できます。たとえば、 GitHub にあるすべてのサンプルアプリで動作します。

これらの資格情報は、資格情報の取得に使用されるアカウントに関連付けられています。 これにより、複数のアプリで同じ資格情報のセットを使用できます。

SDK 依存関係管理

Explore & Navigate の各エディションで は、 CocoaPods 経由での Artifactory のサポートはまだ提供されていません。 つまり、 HERE SDK フレームワークフォルダ (XCFW) を ここの説明に従って手動でダウンロードして統合する必要があります。

エンジン

特に、 Explore & Navigate Edition のすべての機能 は 、エンジンを中心に構築されています。 特定の機能を探すには、まず API リファレンス で関連するエンジンを探し 、このユーザー ガイド内の関連する章を参照して概要を確認することをお勧めします。

すべてのエンジンが Explore Edition で利用できるわけではありません。

  • SearchEngine: ジオコーディングや リバースジオ コーディングなど、場所、提案、場所を検索するすべてのフィーチャーが含まれています。
  • OfflineSearchEngine: すでにダウンロードされているマップ データを使用してリクエストをローカルで作成するオフラインバージョンの検索。
  • RoutingEngine: さまざまなオプションやトランスポートタイプを含むルートを計算可能。
  • OfflineRoutingEngine: すでにダウンロードされているマップ データを使用してルートを計算するオフラインバージョン。
  • LocationEngine: 高度な HERE Positioning ソリューション。
  • ConsentEngine: 例 : LocationEngineを使用する前にユーザーの同意を集約するのに役立つサポートエンジン。
  • Navigator / : VisualNavigator 名前に「 engine 」は含まれていませんが、これらのクラスはエンジンとして機能し、ターン・バイ・ターンナビ (矢印ナビ)のすべての機能を制御します。
  • DynamicRoutingEngine: 現在の交通状況の確認に基づいて、より短いルートまたはより速いルートを定期的に検索するエンジン。 これは、ルートの代替案についてドライバーに通知するためのガイダンス中に役立ちます。
  • TrafficEngine: 交通障害を検索できるエンジン。
  • MapDownloader / : MapUpdater これらのクラスは、マップ データのダウンロードまたは更新を実行し、オフライン モードをサポートするすべてのアプリケーションの重要な部分をマーク。
  • VenueEngine: アプリへのプライベート施設の統合をサポートする専用のエンジン。
  • SDKNativeEngine: 資格情報をプログラムで設定し、他のいくつかの詳細設定を許可するために必要。

移行のクイックスタートについては、移行のエントリポイントマップの初期化セクションを参照してください。

マップに関連するすべてのフィーチャーが MapView クラス全体にグループ化されます。 マップを表示せずに、ヘッドレスモードで HERE SDK を完全に操作できます。

月間アクティブユーザー数のカウント (MAU)

ご利用のプランに応じ て、 HERE SDK は、 1 か月あたりのトランザクション数および月間アクティブユーザー (MAU) などのその他のパラメータに基づいて請求されます。

レガシーアプリ データ

通常、完全に移行されたアプリ は、すでにインストールされているデータが含まれているデバイスで更新されます。 必要に応じて、データを保持、変換、または削除してください。

  • Premium Edition は、すべてのマップ関連データを ".here-maps" フォルダに保存します。
  • このフォルダが存在する場合は、削除することをお勧めします。

4.x HERE SDK は、 ".here-maps" フォルダを単独で読み取ることも削除することもできません。 フォルダーはアプリのディレクトリ内にあります。 ユーザーは、手動でフォルダーを参照および削除できます。また、そのフォルダーには、アプリケーション自体がアクセスして削除することもできます。

マップ ビュー

Explore EditionNavigate Edition は、高度な HERE Rendering Engine フィーチャーを備えています。高度な 3D マップにより、ハイエンドデバイスに合わせて調整された高性能なマップレンダリングが提供され、視覚的に魅力的な真の 3D マップが提供されます。 詳細については、「主な概念」セクションを参照してください。

  • MapViewを統合する には、利用開始ガイドに従ってマップ ビューを適切にロードします。

  • MapViewの視覚的な表現は、定義済みの MapScheme のスタイルまたはカスタムマップスタイルで変更できます。 詳細については、 [ マップスタイル ] セクションを参照してください。

  • すぐに使用できるコードスニペットを取得し、マップ ビューにアイテムを追加する方法については、「マップアイテム」セクションを参照してください。 上記のセクションでは、現在利用可能なものの概要を示します。

  • Navigate Edition の違いと高度な機能の概要については、「カメラ」セクションを参照してください。 MapCamera では、 3D カメラの完全な制御と、よりエキサイティングなフィーチャーを利用できます。 Navigate Edition にはズームレベルもありますが、実際の詳細レベルは異なる場合があります。 さらに 、Navigate Edition は地球からの距離を使用して、より正確な結果を得ることができるように、カメラをマップの上に配置します。

このセクションを補足 するには、ジェスチャー交通状況の確認のセクションも参照して、利用可能なマップ ビューの動作について確認してください。 マーカーのクラスタリングカスタムラスタタイル3D ランドマークアニメーションなど、他の特定のマップフィーチャーはまだ利用できません

カスタマイズしたズームイン / ズームアウトマップのアニメーションを追加するには .doubleTap 、 . twoFingerTap およびジェスチャを上書きします。

mapView.gestures.disableDefaultAction(forGesture: .doubleTap)
mapView.gestures.disableDefaultAction(forGesture: .twoFingerTap)

// ...

// Conform to the DoubleTapDelegate protocol.
func onDoubleTap(origin: Point2D) {
    // Start your custom zoom in animation.
}

// Conform to the TwoFingerTapDelegate protocol.
func onTwoFingerTap(origin: Point2D) {
    // Start your custom zoom out animation.
}

ジェスチャーセクションでは、これをどのように実装できるかは、チュートリアルで参照可能。

マップカメラ

MapViewインスタンス内のCameraオブジェクトは 、 Premium Edition のユーザーに新しい概念を提供します。 一般に、ユーザーの視点として関連付けることができます。この視点は、さまざまなアクションを使用して変更できます。 これらのアクションは 、 チルト、ズーム、バウンディングボックスなどの Premium Edition にすでに存在しています。 NMAMapViewの他のプロパティや、地球との新しい距離のようなものもあれば、名前を変更したものもあります。

MapView に、 Camera の設定済みの位置からの MapScene が表示されます。 Camera オブジェクト自体は変更 MapScene されません。指定した位置からの 3D シーンのみを表します。

Camera には、 Premium Edition ユーザー用 transformCenter としても知られている principlePoint プロパティがあります。 その違いは tranformCenter 、範囲 [{0}, 1] 、 [0,1]} の相対座標を取得することです。ここで、 {0} 0 } はマップの左上隅、 { 1 、 1 } は右下隅を表します。 デフォルト tranformCenter 値は {0.5,0.5} で、幅と高さの両方を中心にしています。 principlePoint が画面上の MapView サイズの範囲内のピクセル値をピクセル単位で取得します。 主なポイント調整の例については「トランスフォームセンターの変更 」セクションを参照してください。

マップのレイヤー

Layer 用語は、共通の条件を持つ視覚的なデータを表し MapViewます。この条件は、で表すことができます。 は MapScene 、複数のマップレイヤを同時に表すことができます。 Layer 表示範囲は、で制御 mapScene.setLayerVisibility(layerName: newState:)されます。 これは同期コールであり、指定された状態になります。 状態は .visible または .hiddenです。 既存の layerNamesLayers 構造で定義されます。

Layers使用例を 「交通状況の確認」セクションに示します。

マップアイテム

マップアイテムを追加するためのエントリポイントは MapScene です。このエントリポイントには、 .mapScene のコールを使用して MapView からアクセスできます。

NMAMapCircleおよび NMAMapRoute は 、 Navigate Edition では使用できません。

  • NMAMapCircle の代わりに、 GeoCircle のジオメトリポイントを使用する MapPolygon を使用してください。
  • RouteGeoPolyline をレンダリングするには、 NMAMapRoute MapPolyline が推奨されるタイプです。

MapMarkerイメージの作成には 、 UIImage PNG データからインスタンス化できるMapImageクラスを使用します。詳細については、この Github の例を参照してください。

さらに MapMarker、マップ UIView にアンカーされているネイティブオブジェクトを表示できます。 UIView ベースのカスタムコンテンツを特別なViewPinオブジェクトに設定し、マップにアンカーするだけで十分です。 Premium Edition のユーザーは、この特別なオブジェクトクラスをNMAMapOverlayと認識している可能性があります。

詳細 ViewPin な説明と例については 、 [ マップ ビューピンの追加 ] セクションを参照してください。

マップのスタイル

Navigation EditionMapViewは 、さまざまな事前定義MapSchemesを使用してレンダリングでき ます。 たとえば、昼間、夜間、衛星などです。 API リファレンス を参照 して、使用可能なすべてのスタイルを確認してください。 また、専用 の HERE Style Editor を使用してマップをカスタマイズすることもできます。この Premium Edition では使用できません。

カスタムマップスタイルを作成するには、次の操作を行います。

  • マップ要素のカラー、幅、およびサイズを定義して、ベースマップ全体のスタイルを設定。
  • ズーム レベルでスタイリングをコントロール。
  • カスタムフォントとアイコンを使用。

カスタムマップスタイルは 、 Premium Edition とは異なるスタイル形式を使用しているため、互換性はありません。

HERE Style Editor の高度な機能の詳細については、「カスタムマップスタイル」を参照してください。

マップダウンローダー

Navigate Edition では、このMapDownloaderクラスは Premium EditionクラスNMAMapLoader の適切な置き換えです。 アプリケーションでのオフライン マップサポートの実装は、この MapDownloader クラスから開始されます。 特定の地域または国のマップ データを明示的にプリロードするには、MapDownloader を使用します。 マップ データのダウンロードの詳細 については、「オフラインマップ」セクションを参照してください。

Premium Edition ユーザーにとって、オフラインのを取得するプロセスは、アクティブおよびパッシブダウンロードと呼ばれます。

アクティブダウンロード

Navigate Edition では、使用可能 なMapDownloaderメソッドを明示的に実行することで、アクティブなダウンロードが行われます。

ダウンロード可能な国またはワールドマップ データの一部には、特別な地域識別子が付けられています。 ID を持つリージョンのリストを取得するには、メソッドgetDownloadableRegions() を使用します。 概要を表示するには :

  1. 最初の SDKNativeEngine を作成し(まだ初期化されていない場合)、静的 MapDownloader.fromEngineAsync(sdkNativeEngine) メソッド呼び出しを使用して MapDownloader をインスタンス化。
  2. 利用可能な地域のリストをダウンロード。
  3. リージョン ID のリストを使用してメソッドdownloadRegions() を明示的に呼び出し、マップ データのアクティブなダウンロードを開始。
  4. downloadRegions メソッドの呼び出し後、 MapDownloaderTask ただちにプロトコルに準拠し、リクエストのキャンセルに使用できるインスタンスを取得。 リージョンデータは非同期でダウンロードされる。
  5. DownloadRegionsStatusListener 結果を処理するプロトコルメソッドハンドラを実装します。

パッシブダウンロード

パッシブマップのダウンロードは暗黙的に行われ、マップ データおよびすべての含まれている情報が更新されます。また、ユーザがマップ シーンを変更した場合(たとえば、マップを使用して移動した場合、パンまたはズームイン / アウトを実行した場合)に、 HERE SDK 自身がオンデマンドで実行します。 この方法では、使用時にネットワーク接続が必要です。 それ以外の場合は、すでにダウンロードされキャッシュされているデータのみが表示されます。

Places

Explore & Navigate エディションを使用 すると 、 Premium Edition とほぼ同じバックエンドサービスにアクセスできます。 はじめにについては、 「検索」セクションを参照してください。

Premium Edition ユーザーは、さまざまな検索リクエスト( NMADiscoveryRequestNMAAutoSuggestionRequestNMAPlaceRequestNMAGeocodeRequest NMAReverseGeocodeRequest など)の最初のポイントとして、 NMAPlaces および応答のリスナの概念について熟知しています。

新しい HERE SDK では、検索および探索のユースケース用に個別のリクエストクラスを作成する代わりに、すべての機能がSearchEngine (またはOfflineSearchEngine) に結合されます。 に SearchEngine は、提案、ジオ コーディング 、 リバースジオ コーディング 、 およびルート沿いの検索などのその他の高度な検索機能があります。 これらの機能はすべて、リモートの HERE サービスデータに基づいています。このデータには、要求を行うためにインターネット接続が必要です。 SearchEngineは 、各リクエストの最新の新しいサービスデータを提供します。 詳細については、検索エンジンのトピックを参照してください。

SearchEngine では、さまざまなパラメーターを使用して専用の(オーバーロードされた)メソッドを呼び出すことで、さまざまな非同期リクエストを開始できます。 パラメータは、わかりやすい名前で構造体にグループ化されます ( 例 GeoCoordinatesTextQueryCategoryQueryなど AddressQuery)。 検索パラメータによって、検索リクエストタイプが定義されます。 TaskHandlesリクエストに対する応答が完了ブロックで返されている間、すべての検索リクエストがただちに返されます。

たとえば、カテゴリの場所を取得するには、次のオーバーロード されたメソッドsearch() を使用します。

private func searchForCategories() {
    let categoryList = [PlaceCategory(id: PlaceCategory.eatAndDrink),
                        PlaceCategory(id: PlaceCategory.shoppingElectronics)]
    let categoryQuery = CategoryQuery(categoryList,
                                      areaCenter: GeoCoordinates(latitude: 52.520798,
                                                                 longitude: 13.409408))
    let searchOptions = SearchOptions(languageCode: LanguageCode.enUs,
                                      maxItems: 30)

    _ = searchEngine.search(categoryQuery: categoryQuery,
                            options: searchOptions,
                            completion: onSearchCompleted)
}

public func onSearchCompleted(error: SearchError?, items: [Place]?) {
    if let searchError = error {
        print("Search Error: \(searchError)")
        return
    }

    // If error is nil, it is guaranteed that the items will not be nil.
    showDialog(title: "Search Result", message: "\(items!.count) result(s) found. See log for details.")

    for place in items! {
        let addressText = place.address.addressText
        print(addressText)
    }
}

Navigate EditionPlace クラスは 、 Premium EditionNMAPlace クラスに相当

接続モード

Premium Edition の検索機能は、オンラインおよびオフライン モードで使用できます。 アプリケーション開発者は、ネットワーク接続が利用可能であっても、オフラインリクエストを強制的に送信することができます。 開発者が接続パラメータを設定していない場合、オンライン / オフラインモード制御はネットワーク接続に基づいて SDK 側で実行されます。

Navigate Edition では、検索機能は 2 つのエンジン SearchEngineOfflineSearchEngine によって制御されます。また、特定のアプリケーションに必要なコンポーネントの構成を柔軟に行うことができます。 SearchEngine API メソッドのインターフェイスはOfflineSearchEngineと同じですが、その逆は同じではありません。

Navigate EditionSearchEngine は、検索、ジオ コーディング、リバースジオ コーディング、および提案機能を備えたオンラインバージョンです。 OfflineSearchEngine は 、ローカル検索、ジオ コーディング、およびリバースジオ コーディング要求に、プリロードまたはキャッシュされたマップ データを使用します。 データの鮮度は最新のダウンロード済みマップ データに依存するため、レスポンスがオンラインリクエストSearchEngine と異なる場合があります。

また 、 Premium Edition と同様に、ネットワークに依存しないコードラッパーを実装することもできます。 オフラインでの検索の詳細 および Githubの例 については、リンクを参照してください。

追加の場所へのリンクの一覧を含む発見リクエストは、評価、画像、レビュー、社説、所有者のコンテンツなど、その場所に関する詳細情報を含むリソースではまだサポートされていません。

経路情報

経路機能を使用すると、開発者は、アプリケーション内の始点と終点の間のルートを定義して表示できます。 道路回避オプションや、車、歩行者、トラックのルート探索のトランスポートタイプなど、多くのオプションをサポートしています。

NMACoreRouter または NMAIsolineRouter を使用する Premium Edition 機能 を新しい RoutingEngine に移行する必要があります。 専用のを介して RoutingEngine 、利用可能なすべての機能にアクセスできます。 Navigate EditionNMATransportModeNMARoutingOptionNMARoutingTypeなどの Premium Edition ルーティングモードパラメータは、トランスポートタイプ (CarOptionsTruckOptionsScooterOptionsEVCarOptionsなど) ごとに設定されます。 次の例は、新しい HERE SDK を使用してルートを計算する方法を示しています。

let carOptions = CarOptions()
routingEngine.calculateRoute(with: [Waypoint(coordinates: startGeoCoordinates!),
                                    Waypoint(coordinates: destinationGeoCoordinates!)],
                             carOptions: carOptions) { (routingError, routes) in

        if let error = routingError {
            self.showDialog(title: "Error while calculating a route:", message: "\(error)")
            return
        }

        let route = routes!.first
        // ...
}

方向機能は、RoutingEngineまたはOfflineRoutingEngineを使用して実装でき ます。 RoutingEngineは、すべてのトラフィックデータの更新でネットワークデータを使用するため、より正確になり ます。一方、OfflineRoutingEngine では、ネットワークが利用できない場合にルートを計算できます。 OfflineRoutingEngine は、ロードされたマップ データを計算に使用します。 マップ データの負荷は、インターネットに接続されたエリアを出る前に事前に行う必要があります。そうしないと、エラーが返されます。

Navigate Edition は、電気自動車専用の新しいルート計算を導入しました。 バッテリー、エネルギー消費、充電スタンド への到達可能性を考慮して、車両のエネルギー不足を防止します。 もう 1 つの違いは、新しいconsumptionInWattHours パラメータを使用した Navigate Edition 拡張範囲タイプの IsolineRouting 計算です。 経路 セクションでは、機能の概要、および新しい HERE SDK を使用して他の種類のルートを計算する方法について説明します。

徒歩とドライブに最適なターン・バイ・ターンナビ (矢印ナビ)

ナビゲーションエディション は、歩行者、トラック、および車のルートでのナビゲーションをサポートします。 このフィーチャーを使用すると、アプリは現在のデバイス位置を計算されたルートと照合して確認し、ジャストインタイムのナビゲーション指示を取得できます。 ビジュアルとオーディオの両方の命令がサポートされています。 現在、道路の矢印など、ほとんどの視覚的な情報は開発者が追加する必要があります。 このためには、 MSDKUI オープンソースライブラリから利用できるアイコンを使用できます。

Premium Edition のターン・バイ・ターンナビ (矢印ナビ) およびトラッキング機能では、クラス NMANavigationManagerが使用されます。 NMANavigationManagerNMAPositioningManager に依存 しています。この依存により、座標がバックグラウンドで更新されます。 ナビゲーションのシミュレーションには、次の NMAPositioningManagerdataSource が使用されます。

  • NMALoggedPositionSource GPS データログファイルから位置更新を生成するために使用されます。
  • NMARoutePositionSource NMARoute 形状からの位置および安定 movementSpeedした。
  • NMADevicePositionSource nil または、実際のデバイス位置の更新を消費します。

Premium Edition でのナビゲーションの位置シミュレーションの例:

    // Simulation navigation by init the PositionSource with route and set movement speed
    let source = NMARoutePositionSource(route: route)
    source.movementSpeed = 60
    NMAPositioningManager.sharedInstance().dataSource = source

デバイスの位置またはシミュレーションを使用したターン・バイ・ターンナビ (矢印ナビ)の Premium Edition の例は 、 Github で利用できます。

Premium Edition とは対照 的に、 Navigate Edition はバックグラウンドで実行されているNMAPositioningManagerを利用しません。 代わりに、任意のソースから以下の場所Navigatorに自由にフィードできます 。 このクラスには、利用可能なすべてのガイダンス機能が含まれています。 これは Premium と同等なNMANavigationManagerです。

位置情報ソースとルートを設定すると、は Navigator ルート沿いの進行状況に関するイベントを送信します。 たとえば、経由地に到達したことを確認するには、受信クラスをMilestoneReachedDelegateに設定し、次のスニペットを使用します。

// Conform to MilestoneReachedDelegate.
// Notifies when a waypoint on the route is reached.
func onMilestoneReached(_ milestone: Milestone) {
    if let waypointIndex = milestone.waypointIndex {
        print("A user-defined waypoint was reached, index of waypoint: \(waypointIndex)")
        print("Original coordinates: \(String(describing: milestone.originalCoordinates))")
    } else {
        // For example, when transport mode changes due to a ferry.
        print("A system defined waypoint was reached at \(milestone.mapMatchedCoordinates)")
    }
}

Premium Edition のユーザーは、Milestone という用語が Waypoint に似ていると感じるかもしれませんが、小さな違いがあります。Waypoint はルートの作成に使用され、Milestone は作成されたルート上のポイントです。 Milestone 追加のアクション(トランスポートタイプの変更など)が必要なルートセクション間に自動的に追加できます。

ナビゲーションの編集( Navigation Editon )は、シミュレーションモードもサポートしています。 NMARoutePositionSource NMAPositioningManager インスタンスを作成して設定する代わりに、別の LocationSimulator を使用して Location 更新を生成します。 これにより、ナビゲーションおよび利用可能なさまざまな位置情報源からの分離をより適切に行うことができます。

次のコードでは、新しいインスタンスを作成し、パラメーターとしてRouteおよびLocationSimulatorOptionsを使用できます。 後者では、希望の速度設定を行うことができます。

let locationSimulatorOptions = LocationSimulatorOptions(speedFactor: 10,
                                                        notificationIntervalInMilliseconds: 100)
let locationSimulator: LocationSimulator

do {
    try locationSimulator = LocationSimulator(route: route,
                                              options: locationSimulatorOptions)
} catch let instantiationError {
    fatalError("Failed to initialize LocationSimulator. Cause: \(instantiationError)")
}

LocationSimulatorlocationSimulator.delegate を添付すると、 Location アップデートに関する通知を受け取ることができます。 次に、それらをNavigatorに個別にフィードできます。 は LocationSimulator 、任意のルートシミュレーション目的で使用できます。また、 GPX ログトレースの再生もサポートしています。

Premium Edition では、 NMANavigationManager 追跡機能には、NMATransportType (自動車、歩行者、トラックなど) を指定して startTrackingメソッドを実行するNMANavigationManagerが必要です。

NMANavigationManager.sharedInstance().map = self.mapView;
let error = NMANavigationManager.sharedInstance().startTracking(.car)

Navigate Edition では、専用 Navigator クラスを使用して現在の位置を追跡し、計算されたルートを使用せずにマップに表示することもできます。 route プロパティをにリセットし nil 、位置プロバイダが同時実行ではないことを確認するだけで十分です。

Premium Edition には、音声合成機能が内蔵 されており、言語ごとNMAVoicePackageに分離されています。言語は、NMAVoiceCatalogからダウンロードしてインストールできます。 パッケージが設定されている場合 NMANavigationManager 、はナビゲーション中に音声出力を再生します。 Navigate Edition で は、ナビゲーション用の音声合成音声がユーザーによって制御されます。 SDK には、命令を生成するための言語が組み込まれています。

  1. Navigator.availableLanguagesForManeuverNotifications()を実行して、使用可能な言語のリストを取得します。
  2. ユーザーのニーズに合う言語で maneuverNotificationOptions Navigator を設定します。この言語は SDK で利用できます。
  3. インスタンスが ManeuverNotificationDelegate プロトコルに準拠し 、Navigatorが、maneuverNotificationDelegate のように設定されていることを確認してください。
  4. onManeuverNotification デリゲートメソッドで受信したテキストを再生するための、独自のテキスト読み上げハンドラを追加します。

  5. 音声読み上げによる音声ナビゲーションをサポート するために、別途VoiceCatalogをダウンロードする必要はありません。 これらのアセットが HERE SDK ライブラリに統合され、利便性が向上しました。

  6. トラフィックアウェアルーティングはデフォルトでイネーブルになっており、現在のトラフィック遅延はターン・バイ・ターンナビ (矢印ナビ)中にイベント RouteProgressから取得できます。

さまざまなナビゲーションフィーチャーの詳細な概要については 、「ナビゲーション 」セクションを参照してください。

3D シェイプ( 3D 施設)

Premium Edition と比較して、プライベート施設のみを Navigate Edition と統合できます。 ショッピングモール、空港、駅、その他の建物などが含まれます。 施設を検索し、施設を開き、マップビューポイントに施設が表示されたときに通知を受け取ることができます。

パブリック施設では Premium Edition はすでに非推奨になっており、 Navigate Edition では使用できません。 施設の所有者であり、 HERE が引き続きサービスまたはパートナーの施設を保守および表面化することを希望する場合は、 venues.support@here.com までお問い合わせください。

ポジショニング

Navigate Edition を使用すると、アプリケーションで 2 つの異なる位置情報ソースから選択できます。 Premium Edition で利用できる機能と同様に、 iOS プラットフォームによって提供された任意のネイティブの位置情報を使用できます。

HERE SDK で使用されるLocationクラスにCLLocationインスタンスを変換して、最も一般的なフィールドをカバーするには、次のメソッドを使用します。

private func convertLocation(nativeLocation: CLLocation) -> Location {
    let geoCoordinates = GeoCoordinates(latitude: nativeLocation.coordinate.latitude,
                                        longitude: nativeLocation.coordinate.longitude,
                                        altitude: nativeLocation.altitude)
    var location = Location(coordinates: geoCoordinates,
                            timestamp: nativeLocation.timestamp)
    location.bearingInDegrees = nativeLocation.course < 0 ? nil : nativeLocation.course
    location.speedInMetersPerSecond = nativeLocation.speed < 0 ? nil : nativeLocation.speed
    location.horizontalAccuracyInMeters = nativeLocation.horizontalAccuracy < 0 ? nil : nativeLocation.horizontalAccuracy
    location.verticalAccuracyInMeters = nativeLocation.verticalAccuracy < 0 ? nil : nativeLocation.verticalAccuracy

    return location
}

Navigate Edition 内のフィーチャーは専用のLocationEngineを介して処理 されます。 NMAPositioningManagerこのクラスは、 Premium Edition の既知のクラスを置き換えます。

Premium Edition は、NMAPositioningManager を使用してマップ マッチング NMAGeoCoordinates を処理しますが、Navigate EditionNavigatorインスタンスの RouteProgressDelegate および NavigableLocationDelegate メソッドで MapMatchedCoordinatesMapMatchedLocationを受け取ります。

別 の違いは、位置情報のシミュレーションです。 Navigate Edition では、 Premium Edition NMAPositioningManagerの代わりにLocationSimulatorカスタム版dataSourceが使用されています。 詳細については、「徒歩とドライブのためのターン・バイ・ターンナビ (矢印ナビ) 」 セクションを参照してください

Apple アプリストアレビューガイドによる と、このアプリケーションでは、不要なデータへのアクセスに同意を強制することはありません。

Premium Edition を使用するアプリケーション開発者は 、インドアポジショニングが使用されていない場合でも、アプリケーションの.plistに Bluetooth 権限を追加する必要があります。

<key>NSBluetoothAlwaysUsageDescription</key>
<string>This is needed for the indoor positioning feature</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>This is needed for the Bluetooth-based indoor positioning feature</string>

Navigate Edition の機能 については 、 [位置の取得] セクションで説明しています。 オフラインでのネットワークの配置やインドアポジショニング はまだ利用できません。

マップのディスクキャッシュ

新しい HERE SDK を使用すると、 SDKNativeEngine経由で SD カードなどの別の場所にマップディスクキャッシュを設定できます。 これについては 、「主な概念」 セクションで説明しています。

サンプルアプリ

以下に、利用可能なサンプルアプリを並べて比較します。

サーチ、ジオ コーディング、リバースジオ コーディング

Premium Explore Navigate 説明
アプリ の例を自動提示します サンプルアプリ を検索します サンプルアプリ を検索します さまざまな種類のAutosuggest リクエストを送信します。
ジオコーダとリバースジオコーダの例アプリ サンプルアプリ を検索します サンプルアプリ を検索します ジオコード およびリバースジオコード 要求をトリガーします。
サンプルアプリ を検索します サンプルアプリ を検索します サンプルアプリ を検索します さまざまな種類の検索リクエストを送信します。
Premium Edition では使用できません。 Explore Edition では使用できません。 SearchHybrid のサンプルアプリ 検索リクエストをオンラインおよびオフラインで送信します。

マップフィーチャー

Premium Explore Navigate 説明
map-attribute のアプリ の例 交通状況の確認の例アプリ 交通状況の確認の例アプリ 属性の操作をマップします。
マップのカスタマイズのサンプルアプリ CustomMapStyles のアプリ の例 CustomMapStyles のアプリ の例 マップ スキーム をカスタマイズします。
マップジェスチャーの例アプリ ジェスチャーの例:アプリ ジェスチャーの例:アプリ マップジェスチャを処理します。
マップオブジェクトのアプリ の例 MapItems のアプリ の例 MapItems のアプリ の例 マップアイテムをマップに追加します。
map-rater-tile の例アプリ CustomRasterLayers のアプリ の例 CustomRasterLayers のアプリ の例 カスタムのラスターレイヤーを読み込みます。
マップレンダリングのサンプルアプリ HelloMap のサンプルアプリ HelloMap のサンプルアプリ HERE SDK をプロジェクトに統合し、デバイスに HERE マップを表示します。
マップダウンローダの例のアプリ Explore Edition では使用できません。 オフラインマップのサンプルアプリ オフライン マップ データをダウンロード。

ルーティングとナビゲーション

Premium Explore Navigate 説明
default-navigation-using-ftcr-routing example アプリ FTCR はメンテナンス中です。 BYOD ルーティングを使用します。 FTCR はメンテナンス中です。 BYOD ルーティングを使用します。 Navigation using "Fleet Telematics Custom Routes (FTCR)" is in maintenance mode. Use the Bring-Your-Own-Data (BYOD) capability of the [Routing v8](https://here-tech.skawa.fun/documentation/routing-api/dev_guide/index.html) REST API or related features in the HERE SDK.
map-data-prefetcher のアプリ の例 Explore Edition では使用できません。 ナビゲーション例アプリ ナビゲーション中に取得したマップ データ を表示します。
ルーティング例のアプリ ルーティング例のアプリ ルーティング例のアプリ ルートを計算してマップに表示します。
Routing-TTA サンプルアプリ ルーティング例のアプリ ルーティング例のアプリ ルートを計算し、到着までの時間 (TTA) を表示します。
ターンバイターンナビゲーションの例アプリ Explore Edition では使用できません。 ナビゲーション例アプリ ナビゲーション中のユーザーの操作および位置の更新を処理します。
Premium Edition では使用できません。 EVRouting サンプルアプリ EVRouting サンプルアプリ 電気自動車のルートを計算し、等値線で到達可能な領域を表示します。
Premium Edition では使用できません。 Explore Edition では使用できません。 RoutingHybrid サンプルアプリ RoutingEngine がルートをオンラインで計算するように設定し、 OfflineRoutingEngine がルートをオフラインで計算するように設定します。
Premium Edition では使用できません。 Explore Edition では使用できません。 NavigationCustom Example アプリ ( 英語 カスタムの LocationIndicator を含むカスタムのナビゲーションエクスペリエンスを表示します。
Premium Edition では使用できません。 Explore Edition では使用できません。 ナビゲーションクイックスタートのサンプルアプリ 基本的なナビゲーションアプリ の設定方法を示します。

その他のサンプルアプリ

Premium Explore Navigate 説明
HERE Mobile SDK UIKit のアプリ の例 4.x ではまだサポートされていません 4.x ではまだサポートされていません HERE Mobile SDK UI Kit コンポーネントが連携して、ナビゲーションのためのシンプルなユーザーインターフェイスを提供する方法を示します。
アプリ の例を示します CLE はメンテナンス中です。 代わりに BYOD を使用します。 CLE はメンテナンス中です。 代わりに BYOD を使用します。 カスタム位置情報拡張( CLE )がメンテナンスモードになっています。 ジオ コーディング and Search v7 REST API の個人所有データの持ち込み( BYOD )フィーチャーを使用して、カスタムの場所を検索するか、 HERE SDK の BYOD 機能を使用します。
アプリ のポジショニング例 Explore Edition では使用できません。 アプリ のポジショニング例 マップ上の場所を表示する HERE Positioning の例。
Premium Edition では使用できません。 Explore Edition では使用できません。 IndoorMap のアプリ の例 施設 内部の HERE Positioning 。
Premium Edition では使用できません。 Explore Edition では使用できません。 CartoPOIPicking の例アプリ 埋め込み POI マーカーの選択方法を表示します。
Premium Edition では使用できません。 公共交通機関のサンプルアプリ 公共交通機関のサンプルアプリ マップに表示される A から B までの公共交通機関ルートを計算します。
Premium Edition では使用できません。 StandAloneEngine のサンプルアプリ StandAloneEngine のサンプルアプリ マップ ビュー なしでエンジンを使用する方法を示します。
Premium Edition では使用できません。 交通状況の確認の例アプリ 交通状況の確認の例アプリ マップで交通量と交通事故の視覚化を切り替える方法を示します。

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

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