ドキュメント / はじめる / MapLibre

MapLibre で最初の地図を出す

MapConductor で MapLibre の地図を表示するまでの手順です。セットアップはプラットフォームごとに異なりますが、地図とマーカーを書くコードは同じ考え方で通ります。

TIME
5 min
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 · 動くところまで

東京駅を中心に地図が表示され、マーカーが1つ立ちます。マーカーをタップして「Hello, MapConductor」の吹き出しが出れば完了です。

MapLibre · Marker · InfoBubble

04 · プロバイダを差し替える

同じ画面コードのまま、依存モジュールとビュー名を差し替えれば別のプロバイダで動きます。変わるのは導入手順 — キーの取得と初期化の作法 — だけです。

Google Maps

Apple MapKit

Leaflet

OpenLayers

Azure Maps

Cesium

Open Mobile Maps

関連ページ