코틀린 안드로이드 앱개발 강좌, 구글 지도 활용하기

현대의 모바일 애플리케이션 개발에서 지도 기능은 필수적인 요소가 되었습니다. 특히 위치 기반 서비스를 제공하는 앱(예: 음식 배달, 여행 안내 등)에서는 구글 지도를 활용하는 것이 매우 유용합니다. 이 강좌에서는 코틀린을 활용하여 안드로이드 앱에서 구글 지도를 어떻게 구현하는지에 대해 자세히 설명하겠습니다.

1. 구글 지도 API 이해하기

구글 지도 API는 개발자가 자신의 애플리케이션에 구글 지도를 통합할 수 있게 해주는 서비스입니다. 이 API를 통해 위치 표시, 경로 탐색, 사용자 현재 위치 등의 다양한 기능을 사용할 수 있습니다.

2. 안드로이드 스튜디오 환경 설정하기

구글 지도를 안드로이드 앱에 통합하기 위해서는 먼저 개발 환경을 설정해야 합니다. 안드로이드 스튜디오를 사용하여 새로운 프로젝트를 시작합시다.

  1. 안드로이드 스튜디오를 열고, 새로운 프로젝트를 생성합니다.
  2. 프로젝트를 생성할 때, Empty Activity를 선택합니다.
  3. 프로젝트 이름과 패키지 이름을 설정한 후, 다음으로 이동합니다.

3. 구글 지도 API 키 받기

구글 지도를 사용하기 위해서는 API 키가 필요합니다. 다음 단계로 API 키를 받는 방법을 설명하겠습니다.

  1. 구글 클라우드 플랫폼에 방문하여 새로운 프로젝트를 만듭니다.
  2. API 및 서비스 메뉴에서 지도 API를 활성화합니다.
  3. API 키를 생성하고, 이후에는 이 키를 사용하여 요청을 보낼 수 있습니다.
  4. API 키는 res/values/strings.xml 파일에 추가합니다:
<string name="google_maps_key">YOUR_API_KEY</string>

4. Gradle에 의존성 추가하기

구글 지도를 사용하기 위해서 필요한 의존성을 build.gradle 파일에 추가해야 합니다.

dependencies {
    implementation 'com.google.android.gms:play-services-maps:17.0.1'
}

5. XML 레이아웃 파일 작성하기

앱에서 지도를 표시하기 위해 XML 레이아웃 파일에 MapView 또는 SupportMapFragment를 추가할 수 있습니다. 여기서는 SupportMapFragment를 사용하겠습니다. res/layout/activity_maps.xml 파일을 다음과 같이 작성합니다:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </fragment>

</RelativeLayout>

6. 지도 Activity 작성하기

이제 구글 지도를 띄우기 위한 액티비티를 작성할 차례입니다. MapsActivity.kt 파일을 다음과 같이 작성합니다:

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.google.android.gms.maps.CameraUpdateFactory
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.OnMapReadyCallback
import com.google.android.gms.maps.SupportMapFragment
import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.MarkerOptions

class MapsActivity : AppCompatActivity(), OnMapReadyCallback {

    private lateinit var mMap: GoogleMap

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_maps)

        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        val mapFragment = supportFragmentManager
            .findFragmentById(R.id.map) as SupportMapFragment
        mapFragment.getMapAsync(this)
    }

    override fun onMapReady(googleMap: GoogleMap) {
        mMap = googleMap

        // Add a marker in Sydney and move the camera
        val sydney = LatLng(-34.0, 151.0)
        mMap.addMarker(MarkerOptions().position(sydney).title("Marker in Sydney"))
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
    }
}

7. 앱 권한 요청하기

위치 정보를 사용하기 위해 앱의 AndroidManifest.xml 파일에 필요한 권한을 추가해야 합니다:

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

<application
    ... >
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/google_maps_key" />
</application>

8. 지도에서 위치 표시하기

앱에 현재 위치를 표시하는 기능을 추가해 보겠습니다. onMapReady 메소드 내에서 사용자 위치를 활성화하는 코드를 추가합니다:

if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    // 권한이 없는 경우
    ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), 1000)
    return
}
mMap.isMyLocationEnabled = true

9. 사용자 위치 핀 꽂기

기본 위치 추가 외에도 사용자가 특정 위치를 선택했을 때 핀을 꽂는 기능도 구현할 수 있습니다. 아래 코드를 onMapClickListener 메소드로 추가해줍니다:

mMap.setOnMapClickListener { latLng ->
    mMap.addMarker(MarkerOptions().position(latLng).title("Selected Location"))
}

10. API 추가 기능

구글 지도 API는 단순한 지도 표시 외에도 여러 가지 기능을 제공합니다. 예를 들어, 경로 그리기, 여러 마커 추가하기, 또는 사용자 정의 마커를 만드는 것 등이 있습니다. 다음은 커스텀 마커를 만드는 예제입니다:

val bitmap = BitmapFactory.decodeResource(resources, R.drawable.custom_marker)
val markerOptions = MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.fromBitmap(bitmap))
mMap.addMarker(markerOptions)

11. 테스트 및 배포

앱이 완성되면 에뮬레이터 또는 실제 기기에서 테스트해볼 수 있습니다. 문제가 없는지 확인한 후, Play Store에 배포할 준비를 합니다. 배포를 위해서는 APK 파일을 생성하고, Play Console을 통해 업로드하면 됩니다.

결론

이번 강좌에서는 코틀린을 사용하여 안드로이드 앱에서 구글 지도를 활용하는 방법을 배워보았습니다. 구글 지도 API는 다양하고 강력한 기능을 제공하므로, 이를 활용해 위치 기반 서비스를 개발해보세요. 다양한 예제와 연습을 통해 더 나은 개발자가 되시길 바랍니다.

이 강좌가 도움이 되었다면 공유하고, 댓글을 달아주세요! 더 많은 안드로이드 개발 강좌를 시리즈로 준비할 예정이니 많은 기대 부탁드립니다.