Get Started
This guide walks you through the first steps to build apps with the HERE SDK for Flutter. The HERE SDK for Flutter is tailored to bring the best and freshest assets from the HERE platform to your mobile applications.
Before you begin, make sure you have read the following:
Info
In order to start development, you need to get the HERE SDK package. It contains:
- The HERE SDK plugin folder. This includes the HERE SDK binaries.
- Several documentation assets and example apps.
- The HERE_NOTICE files that needs to be included in your app. See our open source notices.
You have two choices to get the HERE SDK package:
As a next step, choose a plan:
You can freely start using the HERE SDK with the Freemium plan. An overview of the available plans can be found on the pricing page. More details on the plans can be found in our pricing FAQs.
Get Your Credentials
The HERE SDK requires two strings to authenticate your app:
- ACCESS KEY ID (
access_key_id
): A unique ID for your account. - ACCESS KEY SECRET (
access_key_secret
): A secret key, which is shown only once after creation time. Please make sure to note it down before leaving the page.
No other credentials or tokens are needed to use the HERE SDK.
You can register and manage your app as described in the Identity & Access Management guide. You can acquire credentials for you plan either from developer.here.com or on the HERE platform portal:
- On developer.here.com, after creating your project, generate an app to obtain an access key ID and access key secret. You can either choose an existing project or Select a plan for a new project. Then scroll down to the HERE SDK product family and click Create a Key.
- Alternatively, on the HERE platform portal go to your apps page and register a new app. Once registered, you can create credentials.
Note
Note that these credentials can be reused for the Lite and Explore Editions regardless of the platform - furthermore, you can use these credentials for more than one app. For example, they will work with all example apps you can find on GitHub. For the Navigate Edition you need to contact your HERE representative to generate a set of evaluation credentials.
When you obtain your credentials, also an APP ID is generated. This ID is not consumed by the HERE SDK, but it is recommended to mention it when contacting the HERE support team.
The below section shows how to set the credentials for an app.
Try the Example Apps
The easiest way to get started, is to try one of the example projects that are available for the HERE SDK on on GitHub.
Choose an example of your choice, then set your credentials for the individual Android and iOS projects:
Inside the example app's folder, open /android/app/src/main/AndroidManifest.xml
and set your credentials (key / secret):
<meta-data android:name="com.here.sdk.access_key_id" android:value="YOUR_ACCESS_KEY_ID"/>
<meta-data android:name="com.here.sdk.access_key_secret" android:value="YOUR_ACCESS_KEY_SECRET"/>
Open /ios/Runner/Info.plist
and set your credentials (key / secret):
<key>AccessKeyId</key>
<string>YOUR_ACCESS_KEY_ID</string>
<key>AccessKeySecret</key>
<string>YOUR_ACCESS_KEY_SECRET</string>
Now add the HERE SDK plugin folder:
- Unzip the downloaded HERE SDK for Flutter package. This folder contains various files including this documentation.
- Inside you will find a TAR file that contains the HERE SDK for Flutter plugin.
- Now unzip the TAR file and rename the folder to 'here_sdk' and place it to the
plugins
folder inside the example app's directory.
Finally, make sure that a device is attached or that an emulator (Android) or simulator (iOS) is running. Execute flutter run
from the directory of the example on your terminal - or run the app from within your IDE.
Feel free to experiment with the code of the examples. You can also follow the guide below to get a more detailed introduction on how to use the HERE SDK to build apps.
Try the Reference Application
A reference application for the HERE SDK for Flutter (Navigate Edition) is available on GitHub: It shows how a complex and release-ready project targeting iOS and Android devices may look like. You can use it as a source of inspiration for your own HERE SDK based projects - in parts or as a whole. Many parts of the app overlap with the Explore Edition - however, guidance requires the Navigate Edition. At the moment, only HERE SDK 4.10.0.0 is supported.
Screenshots from the HERE SDK Reference Application for Flutter.
You can see an overview of the available assets and code snippets in this ref app guide.
Create a New Flutter Project and Show a HERE Map
As a very first step-by-step example, we will develop below a "Hello Map" Flutter application that shows - yes! - a map. If you want to integrate the HERE SDK into an existing application, you can skip this step. No specific SDK code is involved here.
If you are new to Flutter, please follow the guides on flutter.dev to help you get started with the first steps.
Note
The example code for "hello_map" is available from here.
You don't need any advanced Flutter or Android or iOS experience to follow this step-by-step instruction.
For this guide, we have used Android Studio version Bumblebee 2021.1.1 Patch 2 and Xcode version 13.0. In addition, we have used:
- Flutter 2.8.1
- Dart version 2.15.1
Newer versions may also work, but are not guaranteed to work. The Flutter version 2.8.0 and Dart 2.15.0 are also supported. It is recommended to use the Dart version that is bundled with Flutter.
Note
This guide does not cover changes that might be needed when you are migrating your app from a Flutter version that is older than the minium supported Flutter version 2.8.0. All example apps in this guide are compliant with the Flutter V2 plugin architecture. By default, new app projects created with Android Studio are already ready for V2 plugins when Flutter version 1.12 or higher is used.
Step 1: Create a Flutter Project
To create a new HERE SDK for Flutter project:
First, create a new Flutter project, we have called it "hello_map". Make sure you can run your new Flutter project on an Android and iOS device of your choice to make sure that your Flutter SDK is configured correctly. If it does not work, please refer to the Flutter documentation.
Note
If you don't want to support both platforms, you can skip the steps for either iOS or Android. Note that the HERE SDK for Flutter does not support web and desktop apps.
Step 2: Integrate the HERE SDK into Your App
As soon as you have verified that everything is set up correctly, it's time to integrate the HERE SDK for Flutter.
Note
Note that the HERE SDK is only available as a separate download. Artifactory support is not yet available.
Unzip the downloaded HERE SDK for Flutter package. This package contains various files including this documentation:
- A license file.
- The Developer's Guide.
- The API Reference.
- The Release Notes.
- A TAR file containing the HERE SDK for Flutter plugin. The file is named like this:
here_sdk-<edition>-<version>.release.tar.gz
.
Unzip the TAR file, then rename the folder to here_sdk
. The content of the plugin folder looks similar like below:
Screenshot: The content of the HERE SDK plugin folder.
Now create a plugins
folder inside your project and copy the renamed plugin folder to this new folder. With this, the content of the plugin folder is contained in hello_map/plugins/here_sdk
.
Open the pubspec.yaml
file of your Flutter project and add the path from above to the dependencies
section. If you are not sure where to add this, it should look as follows:
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
Of course, if you want, you can rename the plugin folder and adjust the path.
If the path is specified correctly, you can execute flutter pub get
from your terminal and the HERE SDK should appear in your project tree. For example, if you are using Android Studio, it will appear under External Libraries -> Flutter Plugins.
After you have executed flutter pub get
(or clicked the respective Pub get button in Android Studio or any other IDE), a new Podfile is created for iOS. Open hello_map/ios/Podfile
and set the platform to the minimum supported iOS version:
# Uncomment this line to define a global platform for your project.
platform :ios, '12.4'
Then open `hello_map/ios/Runner.xcodeproj` with Xcode and set the deployment target to the same iOS version (via Xcode: _General -> Deployment Info -> Target_). This step is needed if you want to build your app later on with `flutter build ios` from the terminal for [release](https://flutter.dev/docs/deployment/ios). Now, adjust the minimum supported Android SDK version. Open /hello_map/android/app/build.gradle
to change the minSdkVersion
to:
minSdkVersion 21
Step 3: Set Your Credentials to Authenticate the HERE SDK
When using the HERE SDK, your application must be authenticated with a set of credentials. For convenience, you can add these to the AndroidManifest.xml
and/or Info.plist
file of your project. There are also alternative ways possible - as shown in the Key Concepts section.
Info
Tip: In the Key Concepts section you can find several ways to initialize the HERE SDK manually. Depending on your contractual details, the time of initialization may have an impact on how transactions and monthly active users (MAU) are counted.
As a next step, open /hello_map/android/app/src/main/AndroidManifest.xml
and add the following meta-data
tags nested under the <application>
tag:
<application
android:name="${applicationName}"
android:label="hellomap"
android:icon="@mipmap/ic_launcher">
<meta-data android:name="com.here.sdk.access_key_id" android:value="YOUR_ACCESS_KEY_ID"/>
<meta-data android:name="com.here.sdk.access_key_secret" android:value="YOUR_ACCESS_KEY_SECRET"/>
...
Do the same for iOS, then open /hello_map/ios/Runner/Info.plist
and add:
<key>HERECredentials</key>
<dict>
<key>AccessKeyId</key>
<string>YOUR_ACCESS_KEY_ID</string>
<key>AccessKeySecret</key>
<string>YOUR_ACCESS_KEY_SECRET</string>
</dict>
Info
If you are using Xcode 13 or newer, you can create a Info.plist
file by adding an entry to Project -> Targets -> Info
. Once a new entry is added, a new file will be created by Xcode. Alternatively, you can edit the Info
tab directly. For older Xcode versions, this file is created automatically by Xcode when creating a new project.
Make sure to set your own credentials (key / secret).
Now, all preparation work is done and you can start using the HERE SDK.
Step 4: Show a HERE Map
Let's start coding.
Below you can see how to show a HERE map view. Remove all the code from your main.dart
file and replace it with the following:
import 'package:flutter/material.dart';
import 'package:here_sdk/core.dart';
import 'package:here_sdk/mapview.dart';
void main() {
SdkContext.init(IsolateOrigin.main);
runApp(MyApp());
}
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;
hereMapController.camera.lookAtPointWithDistance(GeoCoordinates(52.530932, 13.384915), distanceToEarthInMeters);
});
}
}
Note
Null safety is supported by default. It can be optionally disabled, by adding the following comment on top of any Dart file: // @dart=2.9
.
The HERE SDK requires initialization of its native libraries via SdkContext
, which should happen before your app widget is started. Therefore, we updated the main()
function of the Flutter project.
Since the HereMap
is already implemented as a stateful widget, you can set it directly as the home
for your app. The private _onMapCreated
callback notifies us when the HereMapController
instance is created. The HereMapController
allows you to interact with the map.
Before you can see any vector tiles on the map, we must load a map scheme. Here we load MapScheme.normalDay
. As an exercise, you can try to replace the above map scheme with the following: MapScheme.satellite
. What do you get? Try out also other map schemes, like the normal night scheme.
The view onto the map can be defined via the camera
object. In the example above we show a location in Berlin, Germany.
In general, it is recommended to wait with map manipulations until the scene has loaded. For example, camera operations may be enqueued until the scene is loaded, while other operations simply may have no effect without a map scene.
In additon, it is recommended to free resources when leaving the app by calling SdkContext.release()
. This can be done in the overridden dispose()
method of a stateful widget. For simplicity, this has been left-out in the example above, but you can see this in the other available example apps on GitHub.
Step 5: Run Your App
Now, it's time to build and run the app. Attach a device or start an emulator or simulator and execute flutter run
from the app's directory - or run the app from within your IDE. If all goes well, you should see a HERE map covering the screen.
Screenshot: Showing main map scheme.
Screenshot: Showing satellite map scheme.
You can find the most common usage principles to help you get the most out of the HERE SDK for Flutter in the Key Concepts section.
What's Next?
This is quick start guide is just a starting point. Take a look at our example apps and browse through the API Reference to discover a lot more exciting features. With the next releases we plan more tutorials and example apps. Stay tuned and thank you for using the HERE SDK for Flutter!
Troubleshooting
When you run into trouble, please make sure to first check the minimum requirements and the supported devices.
Need Help?
If you need help with this or any other HERE product, select one of the options below.
- If you have a HERE representative, contact them when you have questions/issues.
- If you manage your applications and accounts through developer.here.com, log into your account and check the pages on the SLA report.
- If you have more questions, please check stackoverflow.com/questions/tagged/here-api.
- If you have questions about billing, your account, or anything else Contact Us.
- If you have purchased your plan/product from a HERE reseller, contact your reseller.