🌎 Map Service ( Naver Map API )


naver map api를 이용하여 현재위치 띄우기, 장소 검색 등을 연습해보았다.
만들었던 기능들을 하나씩 차근차근 올려보고자 한다.
먼저 네이버 맵 API를 이용하기 위해서는 Naver Cloud Platfrom에 가입하여 애플리케이션을 등록해야한다.
애플리케이션을 등록하기 전에 Naver Cloud Platform에 결제 수단을 등록해 놓아야 map서비스를 이용할 수 있으니 참고하자! (결제는 안되니 안심해도 된다.)
결제 수단을 등록하고 애플리케이션 추가를 누르면 하단의 사진처럼 이용할 수 있는 service 목록들이 나온다. 그 중에서 우리는 Mobile Dynamic Map을 선택하면 된다.
밑으로 내려서 <서비스 환경 등록>탭에 본인의 안드로이드 스튜디오 프로젝트 패키지명을 입력하고 등록을 완료하면 된다.
이후 아래의 사진처럼 성공적으로 등록이 되면 하단의 사진처럼 인증정보를 눌러서 본인의 Client ID를 확인할 수 있다.
API를 사용하기 위해서는 안드로이드 스튜디오 프로젝트에서 Client ID가 필요하니 복사해두자!
1. dependency추가
build.gradle(Module: app)에 다음과 같이 dependency를 추가한다.
implementation 'com.naver.maps:map-sdk:3.11.0'
build.gradle(Project)에도 하단과 같이 추가해준다.
allprojects {
repositories {
google()
jcenter()
maven {
url 'https://naver.jfrog.io/artifactory/maven/'
}
}
}
2. AndroidManifest.xml
manifest파일에 들어가서 application태그 내에 meta-data선언해주고 앞서 복사해두었던 client id를 입력해준다.
<application
android:name=".base.BaseApplication"
android:usesCleartextTraffic="true"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.NoActionBar">
<meta-data android:name="com.naver.maps.map.CLIENT_ID"
android:value="@string/naver_client_id"/>
</application>
3. MapView 만들기
map view를 띄울 프래그먼트 내에 하단과 같이 mapview를 추가해주었다.
<com.naver.maps.map.MapView
android:id="@+id/mapview"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
4. Map View 띄우기
지도만 띄우는건 정말 간단하다.
MapView와 NaverMap의 객체를 생성하고 레이아웃의 map view와 연결해준다.
NaverMap의 객체는 OnMapReadyCallback을 등록하여 비동기로 객체를 얻을 수 있다.
class MapFragment : BaseFragment(), OnMapReadyCallback {
private lateinit var binding: FragmentMapBinding
private lateinit var mapView: MapView
private lateinit var naverMap: NaverMap
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentMapBinding.inflate(inflater, container, false)
mapView = binding.mapview
mapView.onCreate(savedInstanceState)
mapView.getMapAsync(this)
return binding.root
}
override fun onMapReady(naverMap: NaverMap) {
this.naverMap = naverMap
}
}'Android' 카테고리의 다른 글
| [Android] 검색어 저장 기능 구현해보기(dagger-hilt, room, coroutine, mvvm) (0) | 2021.03.25 |
|---|---|
| [Android] Naver검색 api - RxJava, Retrofit, MVVM, Hilt (0) | 2021.03.22 |
| Navigation으로 Fragment를 전환시켜보자! (0) | 2021.03.10 |
| 🔍 Data Binding with Retrofit (Kakao 웹문서 검색 API) (0) | 2021.02.06 |
| Android Studio WebView (0) | 2020.09.21 |