문서 / 설정 / 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.2")

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

    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한 마커는 그대로 움직입니다.