利用開始
このガイドでは、 HERE SDK for Flutter を使用してアプリを構築するための最初のステップについて説明します。 HERE SDK for Flutter は、 HERE platform からモバイルアプリケーションに最適な最新のアセットを提供できるようにカスタマイズされています。
作業を開始する前に、以下の内容を確認してください。
情報
開発を開始するには、HERE SDK パッケージを取得する必要があります。 内容は次のとおりです。
- HERE SDK プラグイン フォルダ。 これには、 HERE SDK バイナリが含まれています。
- 複数のドキュメントアセットとサンプルアプリ。
- アプリ に含める必要がある here_notice ファイル。オープンソースに関する通知を参照してください。
HERE SDK パッケージの入手
ご利用のプランに応じ て、 HERE SDK は、 1 か月あたりのトランザクション数および月間アクティブユーザー (MAU) などのその他のパラメータに基づいて請求されます。
資格情報の取得
注
評価版資格情報を含むアクセス権を取得するには、弊社にお問い合わせください。 基本プランの資格情報では動作しません。 Navigate Edition は、 HERE platform ポータル経由で商業契約に署名したお客様のみが利用できます。
HERE SDK でアプリ を認証するには、次の 2 つの文字列が必要です。
- アクセスキー ID (
access_key_id
):アカウントの一意の ID 。 - アクセスキーシークレット (
access_key_secret
): 秘密キー。作成時に 1 回だけ表示されます。 ページから移動する前に、メモしておいてください。
HERE SDK を使用するために、他の資格情報 またはトークンは必要ありません。
注
これらの資格情報は、プラットフォームに関係なく、Lite、および Explore Edition の各エディションで再利用できます。さらに、これらの資格情報を複数のアプリで使用できます。たとえば、GitHub にあるすべてのサンプルアプリで動作します。 Navigate Edition の場合、HERE の担当者に連絡して、一連の評価資格情報 を生成する必要があります。
資格情報 を取得すると、 HERE .client.id または アプリ ID も表示されます。 これらの ID は、 HERE SDK の公開 API では必要ありませんが、 HERE サポートチームに連絡する場合に役立ちます。 アプリ ID は、 Lite Edition および Explore Edition にのみ関連し、他のエディションには使用されません。
以下のセクションでは、アプリの資格情報を設定する方法を示します。
サンプルアプリの試用
利用開始をする最も簡単な方法は、 GitHub の HERE SDK で利用できるサンプルプロジェクトのいずれかを試すことです。
任意の例を選択し、サンプルアプリのフォルダー内で main.dart
を開いて資格情報 ( キー / シークレット ) を設定します。
次に、 HERE SDK プラグインフォルダを追加します。
- ダウンロードした HERE SDK for Flutter パッケージを解凍します。 このフォルダーには、このドキュメントを含むさまざまなファイルが含まれています。
- 内部には、 HERE SDK for Flutter プラグインを含む TAR ファイルがあります。
- 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.13.0.0 のみがサポートされています。
HERE SDK リファレンスアプリケーションの Flutter 用のスクリーンショット。 利用可能なアセットおよびコードスニペットの概要については、 このリファレンスアプリ ガイドを参照してください。
新しいFlutter Projectを作成し、 HERE マップの表示
最初のステップバイステップの例として、 "Hello Map" Flutterアプリケーションで、マップ上に -yes と表示するアプリケーションを開発します。HERE SDK を既存のアプリケーションに統合する場合は、この手順を省略できます。 特定の SDK コードは、ここに含まれていません。
Flutterを初めて使用する場合は、 flutter.de v のガイドに従って、最初のステップを実行してください。
このステップバイステップの指示に従うには、高度なFlutter、 Android 、 iOS の操作環境は必要ありません。
このガイドでは、Android StudioバージョンのDolphin | 2021.3.1パッチ1とXcodeバージョン14.2を使用しました。 さらに、次のものを使用しています。
すべてのサンプルアプリは、 Fluter 3.3.10 および DART 2.18.6 でもテストされています。
新しいバージョンも動作する可能性がありますが、動作保証はありません。 Flutter にバンドルされている DART バージョンを使用することをお勧めします。
注
このガイドでは、最小でサポートされているフラッタバージョン 3.3.2 よりも古いバージョンのフラッターからアプリ を移行する場合に必要となる変更については説明していません。 このガイドのすべてのサンプルアプリは、 Flutter V2 プラグインアーキテクチャに準拠しています。 デフォルトでは、 Android Studio で作成された新しいアプリプロジェクトは、フラッタバージョン 1.12 以降を使用する場合、 V2 プラグインで使用できる状態になっています。
ステップ 1 : Flutter Projectの作成
新しい 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 は別のダウンロードとしてのみ利用できます。 Artifactory のサポートはまだ利用できません。
ダウンロードした 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 を初期化するためのその他の方法を見つけることができます。
Android デバイスでは事前要件として、InitProvider
を無効にし、application
タグ内の AndroidManifest.xml
ファイルに次のものを追加する必要があります。
<provider
android:name="com.here.sdk.engine.InitProvider"
android:authorities="com.here.sdk.engine.InitProvider"
android:exported="false"
tools:node="remove" />
このためには、次のように名前空間宣言tools
をタグmanifest
にバインドする必要もあります。
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.your_domain.your_app">
InitProvider
は、HERE SDK 4.15.0 がリリースされるまでの非推奨期間中、HERE SDK の以前のエディションをサポートするように廃止されています。 上記のスニペット では、 HERE SDK の自動初期化を明示的に非アクティブ化します。 このスニペット が見つからない場合、 HERE SDK はマニフェストファイルで資格情報 を探し、資格情報 が見つからない場合にクラッシュします。 HERE SDK 4.15.0 以降では、上記のスニペット は省略される予定です。
HERE SDK を初期化するには、 HERE SDK を使用する前に次のメソッドを実行します。
void _initializeHERESDK() async {
SdkContext.init(IsolateOrigin.main);
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.");
}
}
HERE プログラムで資格情報 を挿入できます。 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 {
await SDKNativeEngine.sharedInstance?.dispose();
SdkContext.release();
}
ステートフル ウィジェットのオーバーライドされた メソッドdispose()
でdisposeHERESDK()
を呼び出すことができます。
ステップ 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 {
_initializeHERESDK();
runApp(MyApp());
}
void _initializeHERESDK() async {
SdkContext.init(IsolateOrigin.main);
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 {
@override
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 で利用可能な他のサンプルアプリで確認できます。 初期化の詳細については、 こちらを参照してください。
ステップ 5 : アプリの実行
次に、アプリを構築して実行します。 デバイスを接続するかまたは 、エミュレータまたは シミュレータを起動 してアプリのディレクトリから flutter run
を実行するか、または IDE 内からアプリを実行します。問題が解決した場合は、画面に HERE マップが表示されます。
スクリーンショット: メインマップ スキームの表示
スクリーンショット : 3D ランドマークの表示。
スクリーンショット: 衛星マップ スキームの表示 HERE SDK for Flutter を最大限に活用するための最も一般的な使用方法については 、「主な概念 」セクションを参照してください。
次のステップ
この「利用開始」は、出発点にすぎません。 アプリの例を確認し、 API リファレンス を参照して、よりエキサイティングな機能を見つけてください。 次のリリースでは、チュートリアルとサンプルアプリをさらに計画しています。 HERE SDK for Flutter をご利用いただき、ありがとうございます。
トラブルシューティング
問題が発生した場合 は、まず最小要件とサポートされているデバイスを確認してください。
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 製品についてサポートが必要な場合は、以下のいずれかのオプションを選択してください。