실내지도 설정하기

실내지도 활성화 여부와 제어를 위한 리스너를 설정할 수 있습니다.

아이나비 지도는 특정 건물의 상세한 실내지도를 제공합니다. 사용자가 실내지도 데이터가 있는 지역으로 지도를 이동하면, 해당 건물의 대표층 실내지도가 자동으로 표시됩니다.

이 기능을 활성화하거나, 실내지도가 변경될 때 발생하는 이벤트를 수신하여 커스텀 UI(예: 층 선택 버튼)를 구현할 수 있습니다.

️실내지도 활성화 설정

InaviMap 객체의 enabledIndoorMap 프로퍼티를 사용하여 실내지도 기능의 활성화 여부를 동적으로 제어할 수 있습니다. 이 값의 기본값은 true(활성화)입니다.

// 실내지도를 활성화합니다. (기본값)
inaviMap.enabledIndoorMap = true

// 실내지도를 비활성화합니다.
inaviMap.enabledIndoorMap = false

사용자가 앱 설정 등에서 실내지도 표시 여부를 선택할 수 있도록 옵션을 제공할 때 유용하게 사용할 수 있습니다.

실내지도 변경 이벤트 처리 및 층 변경

사용자가 실내지도의 층을 변경할 때 이벤트를 받아 처리하려면 OnIndoorChangedListener를 설정해야 합니다. 이 리스너는 커스텀 층 선택 UI를 구현하는 데 핵심적인 역할을 합니다.

변경 리스너 설정

// 실내지도 변경 리스너 설정
inaviMap.setOnIndoorChangedListener { placeId: Int?, floors: List<Floor?>?, floor: Floor? ->
    if (placeId != null && floors != null && floor != null) {
        // 실내지도가 활성화되었을 때의 로직
        Log.d("IndoorMap", "건물 ID: $placeId")
        Log.d("IndoorMap", "전체 층 정보: ${floors.joinToString { it?.name ?: "" }}")
        Log.d("IndoorMap", "현재 층: ${floor.name}")
    } else {
        // 실내지도를 벗어났을 때의 로직
        Log.d("IndoorMap", "실내지도를 벗어났습니다.")
    }
}

특정 층으로 변경하기

리스너를 통해 받은 층 목록(floors)을 사용하여 특정 층으로 지도를 변경할 수 있습니다.

// 리스너를 통해 floors 목록을 받았다고 가정합니다.
// 예를 들어, 사용자가 3층 버튼을 클릭했다고 가정해봅시다.
val targetFloor = floors?.find { it?.name == "3F" }

// 해당 층 정보가 있다면 setIndoorFloor()를 호출하여 층을 변경합니다.
targetFloor?.let {
    inaviMap.setIndoorFloor(it)
}

Last updated

Was this helpful?