[kotlin] 지도 및 위치 기반 서비스 구현을 위한 Material Components 사용 방법

안녕하세요! 이번에는 안드로이드 앱에서 Material Components를 사용하여 지도 및 위치 기반 서비스를 구현하는 방법에 대해 알아보겠습니다. 이를 위해 우리는 Kotlin과 Google Maps API를 사용하겠습니다.

1. Google Maps API 키 생성

먼저, Google Cloud Console에서 Google Maps API를 사용하기 위한 API 키를 생성해야 합니다. 적절한 프로젝트를 만들고 Google Maps JavaScript API 및 Geocoding API를 활성화한 후에 API 키를 생성합니다.

2. 안드로이드 프로젝트에 Google Maps API 통합

앱 수준의 build.gradle 파일에 Material Components 및 Google Maps API를 의존성으로 추가합니다.

implementation 'com.google.android.material:material:1.4.0'
implementation 'com.google.android.gms:play-services-maps:17.0.1'

그 다음으로, AndroidManifest.xml 파일에 API 키를 추가합니다.

<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="Your_Google_Maps_API_Key" />

3. 지도 레이아웃 추가

앱의 레이아웃 파일에서 MapViewSupportMapFragment를 추가하여 지도를 표시할 영역을 정의합니다.

<com.google.android.gms.maps.MapView
    android:id="@+id/mapView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

4. Kotlin 코드로 위치 기반 기능 구현

앱의 Kotlin 코드에서 Google Maps API를 사용하여 지도를 표시하고 위치 기반 서비스를 구현할 수 있습니다. 예를 들어, 현재 위치를 가져오고 마커를 표시하는 코드는 다음과 같습니다.

class MapsActivity : AppCompatActivity(), OnMapReadyCallback {

    private lateinit var mMap: GoogleMap

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_maps)
        val mapView = findViewById<MapView>(R.id.mapView)
        mapView.onCreate(savedInstanceState)
        mapView.getMapAsync(this)
    }

    override fun onMapReady(googleMap: GoogleMap) {
        mMap = googleMap
        mMap.uiSettings.isZoomControlsEnabled = true

        val sydney = LatLng(-33.852, 151.211)
        mMap.addMarker(MarkerOptions().position(sydney).title("Marker in Sydney"))
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
    }
}

위 코드는 액티비티에서 지도를 초기화하고, 시드니에 마커를 추가하여 시드니로 지도를 이동시키는 예제입니다.

이제 여러분은 Material Components와 Google Maps API를 사용하여 안드로이드 앱에서 지도 및 위치 기반 기능을 구현하는 방법에 대해 알게 되었습니다. 감사합니다!

참고 자료