문서 / 확장 기능 / 마커 클러스터링

마커를 대량으로 놓기

근접한 마커를 자동으로 클러스터로 묶고, 줌인하면 펼칩니다. 어느 프로바이더의 지도 뷰에서도 같은 코드로 동작합니다.

ANDROID
com.mapconductor:marker-clustering
iOS
MapConductorMarkerCluster
REACT
@mapconductor/react-marker-clustering
플랫폼

01 · 설치

app/build.gradle.kts
implementation("com.mapconductor:marker-clustering")

02 · 사용법

마커의 배열을 클러스터 그룹에 넘기기만 하면 됩니다. 마커 자체의 상태 객체는 통상의 것과 같으며, 고쳐 쓸 필요가 없습니다.

ClusteredMap.kt · Jetpack Compose
val markerStates: List<MarkerState> = remember { buildMarkerList() }
val clusterState = remember {
    MarkerClusterGroupState(
        clusterRadiusPx = 90.0,
        minClusterSize = 5,
        onClusterClick = { cluster -> /* handle tap */ },
    )
}

MapLibreMapView(state = mapState) {
    MarkerClusterGroup(state = clusterState, markers = markerStates)
}

03 · 주요 옵션

Option
Default
설명
clusterRadiusPx
90.0
클러스터로 묶는 거리(화면 픽셀). 작게 하면 분할이 촘촘해집니다.
minClusterSize
3
클러스터로 표시할 최소 마커 수. 이 미만은 개별 마커인 채로 둡니다.
clusterIconProvider
circle badge
클러스터 수에 따른 아이콘을 반환합니다. 기본은 원형 배지.
onClusterClick
null
클러스터의 탭을 받습니다. 줌인에 쓰는 것이 일반적입니다.
enableZoomAnimation
false
줌 시의 전개・집약을 애니메이션하는 ON/OFF. 기본은 비활성. 소요 시간은 zoomAnimationDurationMs(기본 300ms)로 조정합니다.

04 · 성능

수천 개라도 매끄럽게

클러스터링은 백그라운드에서 계산하고, 카메라가 멈췄을 때만 재구성합니다.

SAMPLE
24,526

관련 페이지