์ง๋ Android Kotlin ํ์ฅ ํ๋ก๊ทธ๋จ(KTX)์ Android์ฉ Maps SDK์ Android์ฉ Maps SDK ์ ํธ๋ฆฌํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํ Kotlin ํ์ฅ ํ๋ก๊ทธ๋จ ๋ชจ์์ ๋๋ค. ์ด ํ์ฅ ํ๋ก๊ทธ๋จ์์๋ Android์ฉ Maps SDK ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํ ๋ ๊ฐ๊ฒฐํ๊ณ ์์ฐ์ค๋ฌ์ด Kotlin์ ์์ฑํ ์ ์๋๋ก ํ๋ Kotlin ์ธ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ง๋ KTX๋ ์คํ์์ค๋ก ์ ๊ณต๋๋ฉฐ GitHub์์ ์์์ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค.
์ค์น
Android์ฉ Maps SDK๋ฅผ ์ํ KTX ๋ฐ Android์ฉ Maps SDK ์ ํธ๋ฆฌํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํ KTX(์ ํ์ฌํญ)๋ฅผ ์ค์นํ๋ ค๋ฉด build.gradle
ํ์ผ์ ๋ค์ ์ข
์ ํญ๋ชฉ์ ์ถ๊ฐํ์ธ์.
dependencies { // KTX for the Maps SDK for Android library implementation 'com.google.maps.android:maps-ktx:5.0.0' }
์ฌ์ฉ ์:
KTX ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ฅ ํ๋ก๊ทธ๋จ ๊ธฐ๋ฅ, ์ด๋ฆ์ด ์ง์ ๋ ๋งค๊ฐ๋ณ์, ๊ธฐ๋ณธ ์ธ์, ๋น๊ตฌ์กฐํ ์ ์ธ, ์ฝ๋ฃจํด ๋ฑ์ ์ฌ๋ฌ Kotlin ์ธ์ด ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์์ต๋๋ค.
์ฝ๋ฃจํด์ ์ฌ์ฉํ์ฌ GoogleMap ๊ฒ์
๋ค์๊ณผ ๊ฐ์ด ์ฝ๋ฃจํด์ ์ฌ์ฉํ์ฌ GoogleMap
์ ๊ฒ์ํ ์ ์์ต๋๋ค.
lifecycleScope.launch { lifecycle.repeatOnLifecycle(Lifecycle.State.CREATED) { val mapFragment: SupportMapFragment? = supportFragmentManager.findFragmentById(R.id.map) as? SupportMapFragment val googleMap: GoogleMap? = mapFragment?.awaitMap() } }
๋ง์ปค ์ถ๊ฐ
DSL ์คํ์ผ ๋ฉ์๋ addMarker()
๋ฅผ ์ฌ์ฉํ์ฌ ๋ง์ปค๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
val sydney = LatLng(-33.852, 151.211) val marker = googleMap.addMarker { position(sydney) title("Marker in Sydney") }
์นด๋ฉ๋ผ ์ด๋ฒคํธ ์์ง
์นด๋ฉ๋ผ ์ด๋๊ณผ ๊ฐ์ ์ด๋ฒคํธ๋ Kotlin Flow๋ฅผ ํตํด ์์งํ ์ ์์ต๋๋ค.
lifecycleScope.launch { lifecycle.repeatOnLifecycle(Lifecycle.State.CREATED) { googleMap.cameraMoveEvents().collect { print("Received camera move event") } } }
์ง์๋๋ ๊ธฐ๋ฅ์ ์ ์ฒด ๋ชฉ๋ก์ ์ฐธ์กฐ ๋ฌธ์์์ ํ์ธํ ์ ์์ต๋๋ค.
์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ฌ์ฉํด๋ณด๊ธฐ
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ฉ GitHub ์ ์ฅ์์๋ ์์ฒด ์ฑ์์ Maps KTX ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ๋ฐ๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ๋ ํฌํจ๋์ด ์์ต๋๋ค.
๋ฐ๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํด๋ณด๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
- GitHub์์ ZIP ํ์ผ์ ๋ณต์ ํ๊ฑฐ๋ ๋ค์ด๋ก๋ํฉ๋๋ค.
- Android ์คํ๋์ค์์ ํ์ผ -> ์ด๊ธฐ๋ฅผ ์ ํํ๊ณ ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํ์ฌ ๋ฐฉ๊ธ ๋ณต์ ํ๊ฑฐ๋ ๋ค์ด๋ก๋ํ ํด๋๋ฅผ ์ฝ๋๋ค.
- ๋ฐ๋ชจ ์ฑ์ API ํค๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- Android์ฉ Maps SDK ํค๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์์
secrets.properties
๋ผ๋ ํ์ผ์ ๋ง๋ญ๋๋ค. API ํค๋ฅผ ๋ณดํธํ๊ธฐ ์ํด ์ด ํ์ผ์ ๋ฒ์ ์ ์ ์ดํด์๋ ์ ๋ฉ๋๋ค. - ์ด ํ ์ค์
secrets.properties
์ ์ถ๊ฐํฉ๋๋ค.
MAPS_API_KEY="YOUR_API_KEY"
์ฌ๊ธฐ์YOUR_API_KEY
๋ ์ฒซ ๋จ๊ณ์์ ํ๋ํ ์ค์ API ํค์ ๋๋ค.secrets.defaults.properties
๋ฅผ ์๋ก ์ดํด๋ณผ ์ ์์ต๋๋ค. - ์คํ ๊ตฌ์ฑ์์ app-ktx ๋ชจ๋์ ์ ํํฉ๋๋ค.
- 'app-ktx' ์คํ์ ์ ํํฉ๋๋ค.
๋ค์ ๋จ๊ณ
Google Maps Platform์ฉ ๋ค๋ฅธ Kotlin ํ์ฅ ํ๋ก๊ทธ๋จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์์๋ณผ ์ ์์ต๋๋ค.