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

TomTom セットアップ

TomTom Orbis Maps Display SDK を MapConductor から使う手順です。専用の Maven リポジトリを追加し、API キーをマニフェストで渡します。

MODULE
com.mapconductor:for-tomtom
API KEY
必要
VIEW
TomTomMapView
TIME
15 分
ほかのプラットフォームiOSReact

前提

Android 開発環境(Android Studio)
TomTom Developer Portal のアカウントと Orbis Maps の API キー
STEP 01

API キーを取得する

TomTom Developer Portal で Orbis Maps 用の API キーを発行します。

STEP 02

TomTom のリポジトリを足す

settings.gradle.ktsKotlin
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()

        // TomTom Orbis Maps SDK repository
        maven {
            url = uri("https://repositories.tomtom.com/artifactory/maven")
        }
    }
}
STEP 03

依存関係を追加する

app/build.gradle.ktsKotlin
dependencies {
    // TomTom Orbis Maps Display SDK
    implementation("com.tomtom.sdk.maps:map-display-standard:2.4.1")

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

    implementation("com.mapconductor:core")
    implementation("com.mapconductor:for-tomtom")
}
STEP 04

マニフェストにキーを書く

AndroidManifest.xmlXML
<manifest>
    <uses-permission android:name="android.permission.INTERNET" />

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

テーマを確認する

TomTom の UI オーバーレイ(ロゴ・コンパスなど)は AppCompat 系のテーマを前提にしています。別のテーマでも描画自体は動きますが、警告ログが出ます。Theme.AppCompat または Theme.MaterialComponents 系を推奨します。

動作確認

ここまで動けば完了

地図とマーカーが出れば完了です。

TestTomTom.ktJetpack Compose
@Composable
fun TestTomTom(modifier: Modifier = Modifier) {
    val mapState = rememberTomTomMapViewState(
        mapDesign = TomTomMapDesign.Standard,
        cameraPosition = MapCameraPosition(
            position = GeoPoint(52.3676, 4.9041),
            zoom = 11.0,
        ),
    )

    TomTomMapView(state = mapState, modifier = modifier) {
        Marker(
            MarkerState(
                position = GeoPoint(52.3676, 4.9041),
                icon = DefaultMarkerIcon().copy(label = "Amsterdam"),
            ),
        )
    }
}

地図デザイン

TomTomMapDesign は Orbis Maps の標準スタイルに対応します。

TomTomMapDesign
Notes
Standard
標準の閲覧向けスタイル
Driving
運転向け
Satellite
衛星画像

うまくいかないとき

地図の描画位置がずれる

  • MapConductor 側で MapOptions(renderToTexture = true) を指定しています。既定の SurfaceView 描画は Compose の SubcomposeLayout と競合するためです。独自に MapOptions を組み立てている場合は同じ指定が必要です。

ビルドが通らない

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

次に

マーカー・ポリライン・ポリゴン・円・グラウンドイメージ・ラスターレイヤー・InfoBubble はすべて共通 API で使えます。TomTom はマーカーのネイティブドラッグを持たないため、MapConductor が MotionEvent を直接処理してドラッグを実装しています。draggable なマーカーはそのまま動きます。