เอกสาร / เริ่มต้นใช้งาน / MapLibre

แสดงแผนที่แรกด้วย MapLibre

ขั้นตอนการแสดงแผนที่ MapLibre ด้วย MapConductor การติดตั้งแตกต่างกันไปตามแพลตฟอร์ม แต่แนวคิดในการเขียนโค้ดสำหรับแผนที่และมาร์คเกอร์เหมือนกัน

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

เริ่มต้นด้วย demo tiles

หากระบุ MapLibreDesign.DemoTiles / OpenMapTiles โดยตรง คุณสามารถตรวจสอบการทำงานได้โดยไม่ต้องมีคีย์

HOSTED TILES

เตรียมการโฮสต์สำหรับการใช้งานจริง

หากคุณใช้บริการจัดส่งไทล์ เช่น MapTiler ให้ตั้งค่าคีย์ของแต่ละบริการใน styleURL

หมายเหตุ

demo tiles มีไว้เพื่อตรวจสอบการทำงานเท่านั้น ในแอปพลิเคชันเพื่อการใช้งานจริง โปรดใช้บริการจัดส่งไทล์ของคุณเองหรือบริการเชิงพาณิชย์

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

หน้าที่เกี่ยวข้อง