실내지도 설정하기
실내지도 활성화 여부와 제어를 위한 리스너를 설정할 수 있습니다.
아이나비 지도는 특정 건물의 상세한 실내지도를 제공합니다. 사용자가 실내지도 데이터가 있는 지역으로 지도를 이동하면, 해당 건물의 대표층 실내지도가 자동으로 표시됩니다.
이 기능을 활성화하거나, 실내지도가 변경될 때 발생하는 이벤트를 수신하여 커스텀 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?