ドキュメント / セットアップ / Android / HERE

HERE セットアップ

HERE SDK(Explore Edition を想定)を MapConductor から使う手順です。HERE SDK は Maven ではなく AAR で配布されるため、ファイルをプロジェクトに置く手順が入ります。

MODULE
com.mapconductor:for-here
API KEY
Key ID + Secret
VIEW
HereMapView
TIME
25 分
ほかのプラットフォームiOSReact

前提

Android 開発環境(Android Studio)
HERE 開発者アカウント
Access Key ID と Access Key Secret
HERE SDK Explore Android の AAR ファイル(4.26 系)
STEP 01

認証情報と AAR を用意する

  1. HERE Developer アカウントを作成します。
  2. HERE Developer Portal でプロジェクトを作成します。
  3. Access Key ID と Secret を生成します。
  4. HERE SDK Explore Android の AAR をダウンロードします。4.26 系であれば動作します。
STEP 02

AAR をプロジェクトに置く

AAR をプロジェクトの libs/ に置きます。ファイル名は Gradle から参照する名前と完全に一致させてください。

project layouttext
<project root>/
└── libs/
    └── heresdk-explore-android-4.26.5.0.299343.aar
ファイル名に含まれるビルド番号は参考値です。MapConductor の開発と検証はこのバージョンで行っていますが、ここに固定する必要はありません。MapConductor は各地図 SDK の固有機能になるべく依存しない作りにしているため、バージョンが多少違っても動作します。実際にダウンロードした AAR のファイル名に読み替えてください。
注意
HERE SDK の AAR は再配布が制限されています。公開リポジトリにコミットしないでください(.gitignore に libs/heresdk-*.aar を追加します)。
STEP 03

Secrets Gradle Plugin を入れる

キーをソース管理に置かないための仕組みです。プラグインが secrets.properties を読み、ビルド時に AndroidManifest.xml のプレースホルダーへ値を差し込みます。

(root)/build.gradle.ktsKotlin
plugins {
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") version "2.0.1" apply false
}
STEP 04

依存関係を追加する

AAR はローカルファイルとして参照します。ファイル名は実際に置いたものに合わせてください。

app/build.gradle.ktsKotlin
plugins {
    // ... other plugins
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
}

dependencies {
    // HERE SDK (local AAR).
    // This build number is only the one MapConductor is developed against —
    // use the file name of the AAR you downloaded.
    implementation(
        files("${rootProject.projectDir}/libs/heresdk-explore-android-4.26.5.0.299343.aar")
    )

    // MapConductor BOM pins every module below
    implementation(platform("com.mapconductor:mapconductor-bom:1.2.0"))

    implementation("com.mapconductor:core")
    implementation("com.mapconductor:for-here")
}
STEP 05

マニフェストと認証情報を設定する

HERE は ID と Secret の 2 つを使います。両方をプレースホルダー経由で渡します。

AndroidManifest.xmlXML
<manifest>
    <!-- Add internet and location permissions -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application>
        <!-- HERE Access Key ID -->
        <meta-data
            android:name="HERE_ACCESS_KEY_ID"
            android:value="${HERE_ACCESS_KEY_ID}" />

        <!-- HERE Access Key Secret -->
        <meta-data
            android:name="HERE_ACCESS_KEY_SECRET"
            android:value="${HERE_ACCESS_KEY_SECRET}" />
    </application>
</manifest>
secrets.propertiesProperties
HERE_ACCESS_KEY_ID=your_actual_here_access_key_id
HERE_ACCESS_KEY_SECRET=your_actual_here_access_key_secret
注意
secrets.properties はバージョン管理にコミットしないでください。.gitignore に追加しておくと事故を防げます。CI では環境変数など別の安全な経路で渡します。

動作確認

ここまで動けば完了

HERE の地図が出れば完了です。

TestHere.ktJetpack Compose
@Composable
fun TestHere(modifier: Modifier = Modifier) {
    val mapState = rememberHereMapViewState(
        cameraPosition = MapCameraPosition(
            position = GeoPoint(35.6762, 139.6503),
            zoom = 12.0,
        ),
    )

    // If the map appears, the setup is correct.
    HereMapView(modifier = modifier, state = mapState)
}

地図デザイン

HereMapDesign は HERE のマップスキームに対応します。昼夜や物流向けなど、用途別のスタイルが揃っています。

HereMapDesign
Notes
NormalDay / NormalNight
標準スタイルの昼・夜
Satellite
衛星画像
HybridDay / HybridNight
衛星画像+道路とラベル
LiteDay / LiteNight
情報量を落とした軽量スタイル
LogisticsDay
物流向け
RoadNetworkDay
道路ネットワーク重視

うまくいかないとき

地図が読み込まれない

  • secrets.properties の Access Key ID と Secret が正しいか確認します。
  • キーが有効(無効化されていない)か確認します。

AAR が見つからないと言われる

  • AAR が libs/ にあるか確認します。
  • ファイル名が build.gradle.kts の記述と完全一致しているか確認します(バージョン番号まで)。

ビルドが通らない

  • 地図 SDK の座標とバージョンがバージョンカタログの指定と一致しているか確認します。
  • リポジトリ定義が settings.gradle.kts にあるか確認します(repositoriesMode が FAIL_ON_PROJECT_REPOS だと、モジュール側の repositories は無視されます)。
  • 複数の地図 SDK を同時に入れている場合は、依存の衝突がないか ./gradlew :app:dependencies で確認します。

次に

HereMapView が出たら、他のプロバイダと同じ共通 API でオーバーレイを重ねられます。