[TIL-230705] Google Map - 지도 출력시 마지막 위치로 시작하기 (Jetpack Compose)

반응형

안녕하세요 오늘은 Google Map에서 세부 기능을 이용해보는 포스팅을 작성해보겠습니다.

 

 


지도 출력

 

기본적인 지도 출력하는 예제는 이전에 작성한 코드를 토대로 사용하였습니다.

 

[TIL-230514] Jetpack Compose로 Google Maps API 적용하기

안녕하세요 첫 (이렇게 작성하는게 맞는지 모르겠지만?) TIL를 Google Maps API 적용으로 시작해보았는데요. [TIL-230512] Google Map Api 적용하기 문득 회사에서 하는 개발에 지겨움(?)을 느끼고 있을 때쯤,

weirddev.tistory.com

 

최초 출력시에는 위도, 경도가 (0.0, 0.0) 인 지점으로 기본 셋팅합니다.

val cameraPositionState = rememberCameraPositionState {
        position = CameraPosition.fromLatLngZoom(LatLng(0.0, 0.0), 10f)
    }

 

 

마지막 위치 이동

 

위에 작성한 코드의 위치는 원하는 위치 지점이 아니니 현재 위치에서 가까웠던 지점으로 마지막으로 탐색된 위치로 바로 이동하는 코드를 적용합니다.

var fusedLocationClient =
        LocationServices.getFusedLocationProviderClient(context)
    fusedLocationClient.lastLocation
        .addOnSuccessListener { location: Location? ->
            if (location != null) {
                val update = CameraUpdateFactory.newLatLngZoom(
                    LatLng(location.latitude, location.longitude),
                    15f
                )
                cameraPositionState.move(update)
            }
        }
        .addOnFailureListener {
            it.printStackTrace()
        }

 

코드설명

  • LocationServices.getFusedLocationProviderClient(context).lastLocation
    • Google Play Service API에서 앱에 필요한 위치정보를 제공하는 FusedLocationProviderClient에서 lastLocation을 얻습니다.
    • lastLocation은 내 디바이스에서 가장 최근에 탐색된 위치를 나타냅니다.
    • 위치 기능을 껐다면 캐시도 지워지므로 null을 출력할 수 있습니다.
  • addOnSuccessListener
    • 마지막으로 탐색한 위치를 가져오는데 성공하면 호출됩니다.
    • 획든한 위치를 기본 위치를 기준으로 한 cameraPositionState의 cameraPositionState.move() 함수를 이용하여, 현재 Position을 이동합니다.
  • addOnFailureListenr
    • 마지막으로 탐색한 위치를 가져오는데 실패하면 호출됩니다.

getLastLocation() 특징

 

  • 장점
    • 캐싱 데이터를 반환하므로 비교적 빠르게 위치를 가져옵니다.
    • 배터리 사용량을 최소화하여 위치를 가져옵니다.
  • 단점
    • 기기 재부팅, 위치 기능을 off > on 한 경우는 null이 반환된다.
    • 캐싱 데이터이므로 최신 위치가 아닐 수 있다.
  •  

 


오늘은 Google Map 지도 출력 시 마지막 위치로 이동하는 방법에 대해 작성해 보았습니다.
잘못된 내용이 있다면 댓글 부탁드리고, 내용이 좋았다면 공감, 구독 부탁드려요!

반응형