利用開始

このガイドでは、 HERE SDK for Flutter を使用してアプリを構築するための最初のステップについて説明します。 HERE SDK for Flutter は、 HERE platform からモバイルアプリケーションに最適な最新のアセットを提供できるようにカスタマイズされています。

作業を開始する前に、以下の内容を確認してください。

情報

開発を開始するには、HERE SDK パッケージを取得する必要があります。 内容は次のとおりです。

  • HERE SDK プラグイン フォルダ。 これには、 HERE SDK バイナリが含まれています。
  • 複数のドキュメントアセットとサンプルアプリ。
  • アプリ に含める必要がある here_notice ファイル。オープンソースに関する通知を参照してください。

HERE SDK パッケージの入手

  • HERE Platform Portal登録またはサインインし、HERE SDK パッケージをダウンロードします。 任意のエディションを参照し、 [ 今すぐ取得 ] ボタンをクリックします。 パッケージはバックグラウンドでダウンロードされます。 しばらくお待ちください。

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

詳細については、 商用利用規約を参照してください。

資格情報を入手してください

評価版資格情報を含むアクセス権を取得するには、弊社にお問い合わせください。 基本プランの資格情報では動作しません。 Navigate Edition は、 HERE platform ポータル経由で商業契約に署名したお客様のみが利用できます。

HERE SDK でアプリ を認証するには、次の 2 つの文字列が必要です。

  • アクセスキー ID (access_key_id):アカウントの一意の ID 。
  • アクセスキーシークレット (access_key_secret): 秘密キー。作成時に 1 回だけ表示されます。 ページから移動する前に、メモしておいてください。

HERE SDK を使用するために、他の資格情報 またはトークンは必要ありません。

資格情報は、 GitHub にあるすべてのサンプルアプリで動作します。 Navigate Edition の 場合、 HERE の担当者に連絡して、一連の評価資格情報 を生成する必要があります。

資格情報 を取得すると、 HERE .client.id または アプリ ID も 表示されます。 これらの ID は、 HERE SDK の公開 API では必要ありませんが、 HERE サポートチームに連絡する場合に役立ちます。

アプリ 資格情報 およびプロジェクトの範囲

複数のアプリに同じ資格情報を使用する予定の場合は 、システム内のアプリを差別化する範囲を設定する必要があります。 資格情報を単一のアプリにのみ使用する場合は、この操作は不要です。

サンプルアプリを試してください

利用開始をする最も簡単な方法は、 GitHub の HERE SDK で利用できるサンプルプロジェクトのいずれかを試すことです。

任意の例を選択し、サンプルアプリのフォルダー内で main.dart を開いて資格情報 ( キー / シークレット ) を設定します。

次に、 HERE SDK プラグインフォルダを追加します。

  1. ダウンロードした HERE SDK for Flutter パッケージを解凍します。 このフォルダーには、このドキュメントを含むさまざまなファイルが含まれています。
  2. 内部には、 HERE SDK for Flutter プラグインを含む TAR ファイルがあります。
  3. TAR ファイルを展開し、フォルダの名前を 'here_sdk' に変更して、サンプルアプリのディレクトリ内のフォルダpluginsに配置します。

最後に、デバイスが接続されているか、またはエミュレータ( Android )またはシミュレータ( iOS )が実行されていることを確認します。 flutter run ターミナルの例のディレクトリから実行するか、または IDE 内からアプリを実行します。

サンプルのコードを自由に試してください。 以下のガイドを参照して、 HERE SDK を使用してアプリをビルドする方法についての詳細な概要を参照することもできます。

参照アプリケーションを試してください

HERE SDK for Flutter (Navigate Edition)の参照アプリケーションは 、 GitHubで利用できます。 iOS および Android デバイスを対象とした複雑でリリース準備が整ったプロジェクトがどのようなものかを示しています。これを、独自の HERE SDK ベースのプロジェクトのインスピレーションの源として、部分的にまたは全体として使用できます。アプリ の多くの部分が Explore Edition と重複していますが、ガイダンスは Navigate Edition が必要です。 現時点では、 HERE SDK 4.14.0.0 のみがサポートされています。

HERE SDK リファレンスアプリケーションの Flutter 用のスクリーンショット。

利用可能なアセットおよびコードスニペットの概要については、 このリファレンスアプリ ガイドを参照してください。

新しい Fluter プロジェクトを作成し、 HERE マップを表示します

最初のステップバイステップの例として、 "Hello Map" Flutterアプリケーションで、マップ上に -yes と表示するアプリケーションを開発します。HERE SDK を既存のアプリケーションに統合する場合は、この手順を省略できます。 特定の SDK コードは、ここに含まれていません。

Flutterを初めて使用する場合は、 flutter.de v のガイドに従って、最初のステップを実行してください。

"hello_map" のサンプルコードは 、 HERE から入手できます。

このステップバイステップの指示に従うには、高度なFlutter、 Android 、 iOS の操作環境は必要ありません。

このガイドでは、Android StudioバージョンのDolphin | 2021.3.1パッチ1とXcodeバージョン14.2を使用しました。 さらに、次のものを使用しています。

  • 粗動 3.7.12
  • DART 2.19.6

すべてのサンプルアプリは、 Fluter 3.10.5 および DART 3.0.5 でもテストされています。

新しいバージョンも動作する可能性がありますが、動作保証はありません。 Flutter にバンドルされている DART バージョンを使用することをお勧めします。

このガイドでは、最小でサポートされているフラッタバージョン 3.7. 12 よりも古いバージョンのフラッターからアプリを移行する場合に必要となる変更については説明していません。 このガイドのすべてのサンプルアプリは、 Flutter V2 プラグインアーキテクチャに準拠しています。 デフォルトでは、 Android Studio で作成された新しいアプリプロジェクトは、フラッタバージョン 1.12 以降を使用する場合、 V2 プラグインで使用できる状態になっています。

ステップ 1 : フラッタプロジェクトを作成します

新しい HERE SDK for Flutter プロジェクトを作成するには、次の手順に従います。

まず、新しい Flutter プロジェクトを作成します。このプロジェクトの名前は "hello_map" です。 新しいFlutter Projectを任意の Android および iOS デバイス で実行して、Flutter SDK が正しく設定されていることを確認してください。 問題が解決しない場合は、Flutterのドキュメントを参照してください。

両方のプラットフォームをサポートしない場合は、 iOS または Android の手順をスキップできます。 HERE SDK for Flutter は、 Web およびデスクトップアプリをサポートしていません。

ステップ 2 : HERE SDK をアプリに統合します

すべてが正しく設定されていることを確認したら、ただちに HERE SDK for Flutter を統合してください。

HERE SDK は別のダウンロードとしてのみ利用できます。 MAVEN/Grade, CocoaPods 、または pub.de V 経由の Artifactory サポートはまだ利用できません。 今後のリリースでは、 SDK の依存関係管理を追加する予定です。

ダウンロードした HERE SDK for Flutter パッケージを解凍します。 このパッケージには、このドキュメントを含むさまざまなファイルが含まれています。

  • ライセンスファイル。
  • 開発者ガイド。
  • API リファレンス
  • リリース ノート
  • HERE SDK for Flutter プラグインを含む TAR ファイル。 ファイルの名前は次のようになります : here_sdk-<edition>-<version>.release.tar.gz

TAR ファイルを解凍し、フォルダの名前をhere_sdkに変更 します。 プラグインフォルダーの内容は次のようになります。

スクリーンショット: HERE SDK プラグインフォルダの内容。

次に、プロジェクト内にフォルダーpluginsを作成し、名前を変更したプラグインフォルダーをこの新しいフォルダーにコピーします。 このオプションを使用すると、プラグインフォルダーの内容が hello_map/plugins/here_sdkに含まれます。

Flutter Projectのファイルpubspec.yaml を開き 、上からのパスをセクションdependenciesに追加します。 追加先が不明な場合は、次のようになります。

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^0.1.3

  # The following adds the HERE SDK for Flutter plugin folder to your application.
  here_sdk:
    path: plugins/here_sdk

もちろん、必要に応じてプラグインフォルダーの名前を変更し、パスを調整できます。

パスが正しく指定されていれば、ターミナルからflutter pub getを実行でき、 HERE SDK がプロジェクトツリーに表示されます。 たとえば、 Android Studio を使用している場合は、External Libraries -> Flutter Pluginsの下に表示されます。

flutter pub get を実行 (または Android Studio またはその他の IDE でそれぞれの Pub Get ボタンをクリック ) すると、 iOS 用の新しい Podfile が作成されます。 hello_map/ios/Podfileを開き、プラットフォームを、サポートされている最小の iOS バージョンに設定します。

プロジェクトのグローバルプラットフォーム を定義するには、次の行のコメントを解除します。

platform :ios, '12.4'

次に、 Xcode を使用してhello_map/ios/Runner.xcodeprojを開き、展開ターゲットを同じ iOS バージョンに設定します( Xcode を使用: [ General ] -> [ Deployment Info ] -> [ Target] を選択します ) 。 この手順は、リリースのために、後でターミナルからflutter build iosを使用してアプリ をビルドする場合に必要です。

サポートされている Android SDK の最小バージョンを調整してください。 /hello_map/android/app/build.gradle を開き、 minSdkVersion を次のように変更します。

minSdkVersion 21

ステップ 3 : HERE SDK の初期化

HERE SDK は自動的には初期化されません。 代わりに、 HERE SDK を初期化する時点を自由に決定できます。 初期化はメインスレッドで同期的に行われ、約 100 ミリ秒かかります。

HERE SDK が無効であっても、資格情報の初期化に成功します。 資格情報が有効かどうかを確認するには、フィーチャエンジンを試すことをお勧めします。 資格情報が無効な場合、専用の 列挙型 (enum) 値エラーが発生します。 一部の機能では、他の機能よりも多くの権限が必要になる場合があります たとえば、 Explore Edition 用に取得した資格情報をOfflineSearchEngine と併用すると、Explore Edition のサブセットに含まれないエラーが発生します。

HERE SDK の機能を使用するに、次のメソッドを実行して HERE SDK を初期化します。

void _initializeHERESDK() async {
  // Needs to be called before accessing SDKOptions to load necessary libraries.
  SdkContext.init(IsolateOrigin.main);

  // Set your credentials for the HERE SDK.
  String accessKeyId = "YOUR_ACCESS_KEY_ID";
  String accessKeySecret = "YOUR_ACCESS_KEY_SECRET";
  SDKOptions sdkOptions = SDKOptions.withAccessKeySecret(accessKeyId, accessKeySecret);

  try {
    await SDKNativeEngine.makeSharedInstance(sdkOptions);
  } on InstantiationException {
    throw Exception("Failed to initialize the HERE SDK.");
  }
}

キーとシークレットの正しい資格情報を入力してください。 を呼び出すことで、 makeSharedInstance() HERE SDK を使用するために必要なものをすべて初期化できます。 HERE SDK のコアクラスが呼び出され SDKNativeEngineます。 ボンネットの下では、このインスタンスは HERE SDK によって提供される他のエンジンによって使用されます。

メインスレッドでこのコードを呼び出してください。

4.12.1.0 よりも前の古い HERE SDK バージョンから移行する場合は、ファイルAndroidManifestおよび ファイルplistから資格情報 タグ ( 存在する場合 ) も削除してください。

HERE SDK では、 SdkContextを使用してネイティブライブラリを初期化する必要があります。この処理は、 アプリ ウィジェット を開始する前に行う必要があります。 以下に、レイアウトから MapView にアクセスする前に、ウィジェット のmain()メソッドの initializeHERESDK()を呼び出す例を示します。

initializeHERESDK()と同様に、 HERE SDK を廃棄してリソースを解放することもできます。

void _disposeHERESDK() async {
  // Free HERE SDK resources before the application shuts down.
  await SDKNativeEngine.sharedInstance?.dispose();
  SdkContext.release();
}

ステートフル ウィジェットのオーバーライドされた メソッドdispose()disposeHERESDK()を呼び出すことができます。

情報

ヒント : 「主な概念 」セクションでは、 HERE SDK を初期化するためのその他の方法を見つけることができます。

ステップ 4 : HERE マップを表示します

HERE マップ ビューの表示方法については、以下を参照してください。 ファイルmain.dart からすべてのコードを削除し、次のコードで置き換えます。

import 'package:flutter/material.dart';
import 'package:here_sdk/core.dart';
import 'package:here_sdk/core.engine.dart';
import 'package:here_sdk/core.errors.dart';
import 'package:here_sdk/mapview.dart';

void main() async {
  // Usually, you need to initialize the HERE SDK only once during the lifetime of an application.
  _initializeHERESDK();
  runApp(MyApp());
}

void _initializeHERESDK() async {
  // Needs to be called before accessing SDKOptions to load necessary libraries.
  SdkContext.init(IsolateOrigin.main);

  // Set your credentials for the HERE SDK.
  String accessKeyId = "YOUR_ACCESS_KEY_ID";
  String accessKeySecret = "YOUR_ACCESS_KEY_SECRET";
  SDKOptions sdkOptions = SDKOptions.withAccessKeySecret(accessKeyId, accessKeySecret);

  try {
    await SDKNativeEngine.makeSharedInstance(sdkOptions);
  } on InstantiationException {
    throw Exception("Failed to initialize the HERE SDK.");
  }
}

class MyApp extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'HERE SDK for Flutter - Hello Map!',
      home: HereMap(onMapCreated: _onMapCreated),
    );
  }

  void _onMapCreated(HereMapController hereMapController) {
    hereMapController.mapScene.loadSceneForMapScheme(MapScheme.normalDay, (MapError? error) {
      if (error != null) {
        print('Map scene not loaded. MapError: ${error.toString()}');
        return;
      }

      const double distanceToEarthInMeters = 8000;
      MapMeasure mapMeasureZoom = MapMeasure(MapMeasureKind.distance, distanceToEarthInMeters);
      hereMapController.camera.lookAtPointWithMeasure(GeoCoordinates(52.530932, 13.384915), mapMeasureZoom);
    });
  }
}

Nullの安全性は、デフォルトでサポートされています Dart ファイル// @dart=2.9の先頭に次のコメントを追加することで、オプションで無効にすることができます。

HereMap はすでにステートフルウィジェットとして実装されているため、アプリの home として直接設定できます。 HereMapController インスタンスが作成されると、プライベート _onMapCreated コールバックによって通知されます。 HereMapControllerを使用すると、マップを操作できます。

マップ上にベクタータイルを表示するには、まずマップ スキーム を読み込む必要があります。 ここでMapScheme.normalDayを読み込みます 。 演習として、上記のマップ スキーム を次のように置き換えることができます。MapScheme.satellite。 何を手に入れますか? 通常 の夜間 の設定など、他のマップ設定も試してみてください。

または、利用可能な地図レイヤーのいずれかを試してください。 たとえば、目立つランドマークのテクスチャ付き 3D モデルを有効にするには、次のコード行をアプリ に追加します。

hereMapController.mapScene.enableFeatures({MapFeatures.landmarks: MapFeatureModes.landmarksTextured});

マップ上のビューは 、オブジェクトcameraを介して定義できます。 上の例では、ドイツのベルリンにある場所を示しています。

一般的に、シーンがロードされるまでマップ操作を待機することをお勧めします。 たとえば、カメラ操作はシーンがロードされるまでキューに入れられますが、他の操作はマップ シーンなしでは影響を受けません。

さらに、 SDKNativeEngine.sharedInstance?.dispose() および SdkContext.release()を呼び出してアプリ から移動する場合は、リソースを解放することをお勧めします。 HERE SDK が自動的に初期化されると、が暗黙的に作成され、設定されます。 SDKNativeEngineこれは 、 ステートフル ウィジェット のオーバーライドされたメソッドdispose()で行うことができます。 簡単にするために、この操作は上記の例では省略されていますが、 GitHub で利用可能な他のサンプルアプリで確認できます。 初期化の詳細については、 こちらを参照してください。

アプリが何らかの方法でシャットダウンしている場合 を廃棄する SDKNativeEngineことは必須ではありませんが、これを行っても害はありません。また、進行中の要求をキャンセルして HERE SDK サービスをシャットダウンすることをお勧めします。 一方、いずれかのウィジェットのみが削除され、アプリの他の部分がまだ HERE SDK を必要とする場合は、 HERE SDK を早期に廃棄しないように注意してください。 一般に、各ウィジェットの HERE SDK を個別に初期化 / 廃棄することもできます。

ステップ 5 : アプリを実行します

次に、アプリを構築して実行します。 デバイスを接続するかまたは 、エミュレータまたは シミュレータを起動 してアプリのディレクトリから flutter runを実行するか、または IDE 内からアプリを実行します。問題が解決した場合は、画面に HERE マップが表示されます。

スクリーンショット: メインマップ スキームの表示

スクリーンショット : 3D ランドマークの表示。

スクリーンショット: 衛星マップ スキームの表示

追加情報

HERE SDK for Flutter を最大限に活用するための最も一般的な使用方法については 、「主な概念 」セクションを参照してください。

iOS の XCFW フレームワーク形式について

含まれている HERE SDK iOS フレームワーク (hersdk.xcframework)はファットバイナリではありませんが、いくつかのアーキテクチャ用のフレームワークのセットが含まれてい ます。これらのフレームワークは、デバイス (arm64) およびシミュレータ (x86_64) 用に構築されています。 そのため、複数のアーキテクチャが含まれています。 これにより、シミュレータ および 実際のデバイスに簡単に展開できます。 また、Xcode のクラッシュを表すデバッグシンボル (dSYM) も含まれています。 dSYM ファイルを使用してクラッシュ HERE をシンボル化する方法については、その他の詳細情報を参照してください。

ファイルサイズは展開時に Xcode によって最適化され、不要なフレームワークは削除されます。

HERE SDK フレームワークは Apple の XCFramework バンドルタイプ(XCFW) に準拠しているため、 Appleアプリ Store 経由で iOS デバイスにアプリを配布するために使用できます。

次のステップ

この「利用開始」は、出発点にすぎません。 アプリの例を確認し、 API リファレンス を参照して、よりエキサイティングな機能を見つけてください。 次のリリースでは、チュートリアルとサンプルアプリをさらに計画しています。 HERE SDK for Flutter をご利用いただき、ありがとうございます。

トラブルシューティング

問題が発生した場合 は、まず最小要件サポートされているデバイスを確認してください。

  • Xcode はシミュレータのプロジェクトをコンパイルしていません。 M1 チップを搭載したコンピューターを使用しています。 4.9.2.0 よりも前の HERE SDK バージョンを使用しています。 新しい HERE SDK バージョンを使用するか、Xcode 内の Build Settings/Architectures/Excluded Architectures/Debug設定で「Any iOS Simulator SDK」の arm64 アーキテクチャを除外して Rosetta モードで実行してみてください。「TARGETS」設定でこのオプションを選択します。 シミュレータを実行すると、パフォーマンスがわずかに低下することがあります。
  • 空白の白いマップのみが表示されます。 ご利用の HERE Credentials が有効で、 上記の「利用開始 」セクションの説明に従って設定されていることを確認してください。 また、ご利用のデバイスがインターネットに接続できることを確認してください。 インターネット接続が遅い場合、最初にロードされたマップのタイルが表示されるまでにしばらくかかることがあります。 また、デバイスの時刻が正しく設定されていることを確認してください。 まれに、デバイスの時間が正しく設定されていないと、一部のバックエンドサービスで認証の問題が発生する可能性があります。
  • 空白の白いマップのみが表示され、ログには「Could not create root isolate.」と表示されます。 この問題は HERE SDK とは無関係で、古いバージョンのFlutterにダウングレードしようとした後に発生することがあります。 以下のものを使用して、Flutterの設置をクリーニングしてください。
    $ rm -rf path/to/flutter/sdk/bin/cache/artifacts/engine/ios*
    $ flutter clean
    $ flutter run
    
  • ログ上で「 iOS/Runner/GeneratedPluginRegistrant.m:12:9: module 'here_sdk' not found ": この問題は、この Flutterの問題に関連している可能性があります。 プロジェクトと podfile を次のように消去してから、もう一度ビルドしてください。
    $ flutter clean
    $ rm ios/Podfile && flutter build ios
    
  • ログに「No map content will be displayed until valid config is provided.」と表示されます。 コードが実際に loadScene()を呼び出していることを確認
  • アプリがクラッシュし、ログに「 cl_magma - could not load the default shader」と表示されます。 お使いのデバイスは OpenGL ES 3.0 をサポートしている必要があります シミュレータを実行している場合は、 [ Setting ] 、 [ Advanced ] 、 [OpenGL ES API level ] の順に選択して、エミュレータの設定を編集します。 「Autoselect」に設定されている場合は、「 Renderer Maximum 」に変更してください。 この問題は主に Windows マシンで発生します。
  • 次のように入力すると、 "no toolchains found in the NDK toolchains folder for ABI, with prefix:arm-linux-androideabi" : これは、アプリのグレードバージョンと互換性のない NDK バージョンがインストールされている場合に発生します。NDK バージョンをアンインストールまたはダウングレードするか、 Gradle クラスパスを新しいバージョンに変更してください。 たとえば、クラスパスをclasspath 'com.android.tools.build:gradle:3.5.4'から classpath 'com.android.tools.build:gradle:4.1.3'に変更します。
  • クラッシュログに次の内容が記録されています。 "Exception was thrown in Java and it was not handled " : HERE SDK は、コールバック内のアプリ側でスローされたランタイム例外を処理できません。 このような場合、このエラーログが表示されます。 つまり、アプリケーションが処理する HERE SDK コールバックの 1 つで、コードが例外をスローします。
  • キャッシュのロックによりクラッシュが発生しています : エラーStorage.LevelDB またはエラー FAILED_TO_LOCK_CACHE_FOLDER が原因でアプリケーションがクラッシュした場合 は、この指示に従って、このようなクラッシュが再度発生しないようにします。
  • グレーの画面が表示されます。 ログに「dequeueBuffer failed」と繰り返し記録される場合、これは新しいFlutterバージョンで修正されたFlutterの問題が原因で、最終的にはFlutter 1.20.3 になる可能性があります。
  • マップが表示されないか、 HERE SDK の呼び出しでは、何も起きない。 「 These credentials do not authorize access 」というログメッセージが表示された場合は、資格情報 が有効ではありません。 資格情報 のワーキングセットを使用していることを確認してください。 3.x エディションの資格情報 には互換性がありませんLite Edition またはExplore Edition の資格情報は、 Navigate Edition と互換性がありません
  • マップ ビューにグラフィカルな不具合が表示されます。 一部の Android バージョンでは、この問題が発生する可能性があり、MapRenderMode.textureを使用して修正できます。 詳細については、マップ ガイドを参照してください。
  • 画面の向きを変更した後、マップ ビューにグラフィックの不具合が表示され、地図のタイルが表示されません。 一部の Android バージョンでは、この問題が発生する可能性があり ます。また、フラッタのハイブリッドコンポジションレンダリングモードを使用して修正できます。 詳細については、地図 ガイドを参照してください。
  • iOSリリース用にビルドすると、ビルドが失敗します。 実行されるログに-embed-bitcodeが表示された場合は 、bitcode optimizationを明示的に無効にしてください。 Appleはビットコードを非推奨にし、HERE SDKはそれをサポートしなくなりました。 ENABLE_BITCODE = NO を設定に追加します。たとえば、ios/Podfileで次のように追加します。
post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
    end
  end
end

サポートが必要な場合

この製品またはその他の HERE 製品についてサポートが必要な場合は、以下のいずれかのオプションを選択してください。

  • HERE の担当者がいる場合、質問や問題がある際には弊社担当者に問い合わせてください。
  • If you manage your applications and accounts through here-tech.skawa.fun, log into your account and check the pages on the SLA report.
  • Slack ワークスペースに参加してください。
  • さらに質問がある場合は 、 stackoverflow.com/questions/tagged/here-api で回答を探すこともできます。
  • 請求、アカウント、その他の情報についてご質問 がある場合は、こちらからお問い合わせください。
  • HERE の販売店からプラン / 製品を購入した場合は、弊社販売店にお問い合わせください。

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

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