[kotlin] 지도와 위치 기반 서비스 사용하기

안드로이드 애플리케이션을 개발할 때, 지도와 위치 기반 서비스를 사용하는 경우가 많습니다. 사용자의 위치를 파악하거나 지도 상에 위치를 표시하는 기능을 구현하는 방법을 살펴봅시다.

위치 권한 획득

안드로이드 앱에서 위치 서비스를 사용하기 위해서는 위치 권한을 획득해야 합니다. 먼저 AndroidManifest.xml 파일에 위치 권한을 추가해야 합니다.

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

Fused Location Provider를 사용한 위치 업데이트

Fused Location Provider는 안드로이드 위치 서비스를 사용하기 위한 API입니다. 다음은 Fused Location Provider를 사용하여 사용자의 위치를 업데이트하는 간단한 예제 코드입니다.

// 위치 서비스 설정
private val locationRequest: LocationRequest = LocationRequest.create().apply {
    interval = 10000
    fastestInterval = 5000
    priority = LocationRequest.PRIORITY_HIGH_ACCURACY
}

// 위치 업데이트 시작
val fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationClient.requestLocationUpdates(
    locationRequest,
    locationCallback,
    Looper.getMainLooper()
)

// 위치 업데이트 콜백 설정
private val locationCallback = object : LocationCallback() {
    override fun onLocationResult(locationResult: LocationResult?) {
        locationResult ?: return
        for (location in locationResult.locations) {
            // 위치 정보 처리
        }
    }
}

// 위치 업데이트 중지
fusedLocationClient.removeLocationUpdates(locationCallback)

위 코드는 Fused Location Provider를 사용하여 10초 간격으로 사용자의 위치를 업데이트하고, 그 결과를 콜백으로 받아 처리하는 예제입니다.

지도 표시하기

안드로이드에서 지도를 표시하기 위해서는 Google Maps Android API를 사용할 수 있습니다. 먼저 API를 등록하고 API 키를 발급받아야 합니다.

// SupportMapFragment를 레이아웃에 추가
val mapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync { googleMap ->
    // 지도 설정
    val sydney = LatLng(-33.852, 151.211)
    googleMap.addMarker(MarkerOptions().position(sydney).title("Marker in Sydney"))
    googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
}

위 코드는 Google Maps Android API를 사용하여 시드니의 위치에 마커를 표시하고, 지도를 해당 위치로 이동하는 예제입니다.

앱에 위치 서비스와 지도 기능을 추가하여 사용자에게 다양한 서비스를 제공할 수 있습니다. 위 예제를 참고하여 안드로이드 앱에서 지도와 위치 기반 서비스를 구현해 보세요.

참고 자료