-
Notifications
You must be signed in to change notification settings - Fork 0
๐บ๏ธ ๋ค์ด๋ฒ์ง๋ API ๋ฌธ์ ์ฝ์ด๋ณด๊ธฐ
ํ๋ก์ ํธ๋ฅผ ์์ํ๊ธฐ ์ api ๋ฌธ์๋ฅผ ๋ฏธ๋ฆฌ ์ฝ์ด๋ณด์๋ค.
Application ๋ฑ๋ก
๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๋ซํผ์์ application ์ ๋ฑ๋กํ๋ ๊ณผ์ ์ ์ด๋ ต์ง ์์๋ค. ํ์ํ ์๋น์ค๋ฅผ ์ ํํด์ ์๋๋ก์ด๋์ ๊ฒฝ์ฐ app package name ์ ํตํด์ ์ดํ์ ๋ฑ๋กํ ์ ์์๋ค.
์์กด์ฑ ์ถ๊ฐ
๋ค์ด๋ฒ ์ง๋ sdk ๋ maven ์ ์ฅ์์์ ๋ฐฐํฌ๋๋ค.
allprojects {
repositories {
google()
mavenCentral()
maven("https://naver.jfrog.io/artifactory/maven/")
}
}
๊ณต์ ๋ฌธ์์๋ ์์ ์์กด์ฑ์ ๋ฃจํธ ํ๋ก์ ํธ์ build.gradle
์ ์ถ๊ฐํ๋๋ก ์๋ดํ๊ณ ์๋๋ฐ, ๊ณ์ ๋น๋๊ฐ ๋์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ํด๋น ๋ถ๋ถ์ ๊ตฌ๊ธ๋ง ํด๋ณด๋ settings.gradle
์ dependencyResolutionManagement
ํ์ repositories{ }
์ ์ถ๊ฐํ์ฌ ํด๊ฒฐํ๋ค๋ ๋ด์ฉ์ ๋ฐ๊ฒฌํ์ฌ ๊ทธ ๋ฐฉ๋ฒ์ ์๋ํด๋ณด๋ ์ฑ๊ณต์ ์ผ๋ก ๋น๋๋ฅผ ํ ์ ์์๋ค.
dependencies {
// ๋ค์ด๋ฒ ์ง๋ SDK
implementation("com.naver.maps:map-sdk:3.17.0")
}
์ฑ ๋ชจ๋์ build.gradle
์ ๋ค์ด๋ฒ ์ง๋ SDK์ ๋ํ ์์กด์ฑ์ ์์ ๊ฐ์ด ์ ์ธํ๋ ๊ฒ์ผ๋ก ์์กด์ฑ ์ถ๊ฐ๋ ๋์ด ๋๋ค.
Client ID ์ง์
๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๋ซํผ์์ application ์ ๋ฑ๋กํ๊ณ ๋ฐ๊ธ๋ฐ์ client ID ๋ฅผ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์ง์ ํ ์ ์๋ค.
-
AndroidManifest.xml
์ ์ง์ <manifest> <application> <meta-data android:name="com.naver.maps.map.CLIENT_ID" android:value="YOUR_CLIENT_ID_HERE" /> </application> </manifest>
-
API
๋ฅผ ํธ์ถํด ์ง์ class App : Application() { fun onCreate() { super.onCreate() NaverMapSdk.getInstance(this).client = NaverMapSdk.NaverCloudPlatformClient("YOUR_CLIENT_ID_HERE") } }
์ง๋ ํ์ํ๊ธฐ
์ง๋๋ ์์ ์ค์ ์ ๋ชจ๋ ๋ง์น ํ ์ดํ์ ๋ ์ด์์์ mapFragment ๋ฅผ ์ถ๊ฐํ์ฌ ๊ฐ๋จํ๊ฒ ๋ํ๋ผ ์ ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฅ ๊ถ์ฅํ๋ ๋ฐฉ๋ฒ์ <FragmentContainerView>
๋ก XML ๋ ์ด์์์ ์ถ๊ฐํ๋ ๊ฒ์ด๋ค.
<androidx.fragment.app.FragmentContainerView
android:id="@+id/map_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.naver.maps.map.MapFragment" />
val fm = supportFragmentManager
val mapFragment = fm.findFragmentById(R.id.map) as MapFragment?
?: MapFragment.newInstance().also {
fm.beginTransaction().add(R.id.map, it).commit()
}
ํ์ง๋ง MapFragment ๋ฅผ ๋ค๋ฅธ Fragment ๋ด์ ๋ฐฐ์นํ ๊ฒฝ์ฐ ์ถ๊ฐ๋ก ์์ ์ ํด์ค์ผ ํ๋ค. ์ด ๋ถ๋ถ์ ๋ํด์๋ ๊ตฌํํ๋ฉด์ ๋ ํ์ตํ ์์ ์ด๋ค.
์ง๋์์ ํ์ฌ ์์น ํ์ํ๊ธฐ
- NaverMap ๊ฐ์ฒด ์ป์ด์ค๊ธฐ
- ์ง๋๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ญํ ์ด์ธ์ API ๋ฅผ ํธ์ถํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด๊ฐ ํ์ํ๋ค.
OnMapReadyCallback
์ ์์๋ฐ์ ๊ตฌํ ๊ฐ๋ฅํ๋ค.
- ์ง๋๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ญํ ์ด์ธ์ API ๋ฅผ ํธ์ถํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด๊ฐ ํ์ํ๋ค.
- ํ์ฌ ์์น ์ถ์ ํ๊ธฐ
- ๋ค์ด๋ฒ ์ง๋ sdk ์์๋ ์์น ์ถ์ ๊ณผ ์ง๋์ ๋ํ๋ด๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์๋ค. ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋
AndroidManifest.xml
์ ๊ถํ์ ๋ช ์ํด์ผ ํ๋ค. ํด๋น ๊ถํ์ ์ต๋ํ ์ ํํ ๊ธฐ๊ธฐ ์์น ์ถ์ ์น๋ฅผ ์ ๊ณตํ๋๋ก ํ๋ค.
<manifest> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> </manifest>
- ๋ค์ด๋ฒ ์ง๋ sdk ์์๋ ์์น ์ถ์ ๊ณผ ์ง๋์ ๋ํ๋ด๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์๋ค. ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋
- ๋ค์ด๋ฒ ์ง๋ sdk ๋ Google Play ์๋น์ค์ Fused Location Provider๋ฅผ ์ฌ์ฉํ๋ LocationSource ๊ตฌํ์ฒด์ธ
FusedLocationSource
๋ฅผ ์ ๊ณตํ๋ค. ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์๋์ ์์กด์ฑ์ ์ถ๊ฐํด์ผ ํ๋ค.dependencies { // 21.0.1 ์ด์ ๋ฒ์ ์ ๋ํ ์์กด์ฑ ์ถ๊ฐํด์ผํจ. implementation("com.google.android.gms:play-services-location:21.0.1") }
- ์๋์ ๊ฐ์ด
NaverMap
๊ฐ์ฒด๋ฅผ ์ป์ด์์ ํ์ฌ ์์น๋ฅผ ์ค์ ํ๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค. ํ ์คํธ๋ฅผ ์ํ ์ฝ๋๋ก ๋ฐํ์ ๊ถํ ์์ฒญ ์ฒ๋ฆฌ๋ ๊ตฌํํ์ง ์๋ ์ฝ๋์ด๋ค.
class MainActivity : AppCompatActivity(), OnMapReadyCallback {
private lateinit var map: NaverMap
private lateinit var location: FusedLocationSource
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val fm = supportFragmentManager
val mapFragment = fm.findFragmentById(R.id.fcv_map) as MapFragment?
?: MapFragment.newInstance().also {
fm.beginTransaction().add(R.id.fcv_map, it).commit()
}
mapFragment.getMapAsync(this)
location = FusedLocationSource(this, 1000)
}
override fun onMapReady(naverMap: NaverMap) {
map = naverMap
naverMap.locationSource = location
}
}
-
locationSource
๋ฅผ ์ง์ ํ๊ณ ๋ ํ ์์น ์ถ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.-
None
: ์์น๋ฅผ ์ถ์ ํ์ง ์๋๋ค. -
NoFollow
: ์์น ์ถ์ ์ด ํ์ฑํ๋๊ณ , ํ ์์น ํ์๊ฐ ๋ณ๊ฒฝ๋๋ ์์น์ ๋ฐ๋ผ ์์ง์ด๋ฉฐ ์ง๋๋ ์์ง์ด์ง ์๋๋ค. -
Follow
: ์์น ์ถ์ ์ด ํ์ฑํ๋๊ณ , ํ ์์น ํ์๊ฐ ์ฌ์ฉ์ ์์น์ ๋ฐ๋ผ ์์ง์ธ๋ค. -
Face
: ์์น ์ถ์ ์ด ํ์ฑํ๋๊ณ , ์ฌ์ฉ์์ ์์น ๋ฐ ๋ฐฉํฅ์ ๋ฐ๋ผ ๋ชจ๋ ํ์ ์์๊ฐ ๋ฐ๋ผ ์์ง์ธ๋ค.
override fun onMapReady(naverMap: NaverMap) { map = naverMap naverMap.locationSource = location naverMap.locationTrackingMode = LocationTrackingMode.Follow }
-
Emulator ์์ ํ์ฌ ์์น ํ์ ํ์ธํ๊ธฐ
emulator ์ค์ ์์ ์์น๋ฅผ ์ง์ ํ ์ ์๋ค. ์ํ๋ ์ฃผ์๋ฅผ ๊ฒ์ํ ํ ํด๋น emulator ๊ฐ ํ์ฌ ์์น๋ก ๊ทธ ์ฃผ์๋ฅผ ์ธ์ํ๊ฒ ํ ์ ์๋ค.
์ค์ ์ด ๋๋๊ณ ์ดํ์ ์คํํ๋ฉด ํ์ฌ ์์น์ ํ์๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ดํ์ ์ผ๋ ์ํ๋ก emulator ์์ ์์น ์ค์ ์ ๋ณ๊ฒฝํ๋ฉด ์ดํ ๋ด์ ์์น ํ์ ์ญ์ ๋ณ๊ฒฝ๋๋ค.
location 1 | location 2 |
---|---|
![]() |
![]() |
-
๐ฌ ํ ํ๊ณ
-
๐โโ๏ธ ๊ฐ์ธ ํ๊ณ