문서 / 시작하기 / MapLibre

MapLibre로 최초의 지도를 내기

MapConductor로 MapLibre의 지도를 표시하기까지의 절차입니다. 셋업은 플랫폼마다 다르지만, 지도와 마커를 쓰는 코드는 같은 사고방식으로 통합니다.

TIME
5분
PROVIDER
MapLibre
API KEY
불필요
LICENSE
OSS
플랫폼
셋업에만 차이가 있습니다

01 · 설치

의존 관계에 core와 for-maplibre를 추가합니다. 다른 프로바이더를 쓰는 경우는 모듈을 교체하기만 하면 됩니다.

settings.gradle.ktsKotlin
dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
    }
}
app/build.gradle.ktsKotlin
dependencies {
    implementation(platform("com.mapconductor:mapconductor-bom:1.3.1"))
    implementation("com.mapconductor:core")
    implementation("com.mapconductor:for-maplibre")
    // 선택: compose / icons / heatmap / marker-clustering / geojson / kml
}

02 · 타일을 정한다

MapLibre 자체에 API 키는 없습니다. 지도의 겉모습은 타일의 배포처로 정해집니다.

DEMO TILES

데모 타일로 시작하기

MapLibreDesign.DemoTiles / OpenMapTiles를 그대로 지정하면, 키 없이 동작을 확인할 수 있습니다.

HOSTED TILES

본번은 호스팅을 준비

MapTiler 등의 타일 배포를 쓰는 경우는, 각 서비스의 키를 스타일 URL에 설정합니다.

NOTE

데모 타일은 동작 확인용입니다. 본번 앱에서는 자체 또는 상용의 타일 배포를 쓰세요.

03 · Hello Map

카메라 위치를 가지는 상태 객체를 만들어, 지도 뷰에 넘깁니다. 마커나 정보 버블 같은 오버레이는 자식 요소로 선언합니다. 마커가 탭되면 정보 버블을 내고, 지도가 탭되면 닫습니다.

상태 객체는 컴포넌트의 생존 기간 내내 보관합니다. 프로퍼티를 직접 갱신하면, 뷰를 다시 만들지 않고 반영됩니다.
SimpleMapScreen.kt · Jetpack Compose
@Composable
fun SimpleMapScreen(modifier: Modifier) {
    var selected by remember { mutableStateOf<MarkerState?>(null) }

    val mapState = rememberMapLibreMapViewState(
        cameraPosition = MapCameraPosition(
            position = GeoPoint(35.6812, 139.7671),
            zoom = 14.0,
        ),
        mapDesign = MapLibreDesign.OsmBright,
    )
    val markerState = remember {
        MarkerState(
            position = GeoPoint(35.6812, 139.7671),
            onClick = { selected = it },
        )
    }

    MapLibreMapView(
        modifier = modifier,
        state = mapState,
        onMapClick = { selected = null },
    ) {
        Marker(markerState)
        selected?.let {
            InfoBubble(marker = it) { Text("Hello, MapConductor") }
        }
    }
}

RESULT · 움직이는 곳까지

도쿄역을 중심으로 지도가 표시되고, 마커가 하나 섭니다. 마커를 탭해 「Hello, MapConductor」의 말풍선이 나오면 완료입니다.

MapLibre · Marker · InfoBubble

04 · 프로바이더를 교체하기

같은 화면 코드인 채로, 의존 모듈과 뷰 이름을 교체하면 다른 프로바이더에서 동작합니다. 바뀌는 것은 도입 절차 — 키의 취득과 초기화의 작법 — 뿐입니다.

Google Maps

Apple MapKit

Leaflet

OpenLayers

Azure Maps

Cesium

Open Mobile Maps

관련 페이지