한 걸음 두 걸음

android / 안드로이드 ] 네이버지도 api #01 적용시키기 본문

FrontEnd/Android

android / 안드로이드 ] 네이버지도 api #01 적용시키기

언제나 변함없이 2019. 8. 8. 12:40
반응형

결과화면

https://www.ncloud.com/

이제 네이버지도API는 네이버클라우드에서 유로로 관리합니다.

클라우드에 들어가면 Map서비스가

위처럼 있는거 확인하실 수 있습니다.

회원가입하신 후 로그인해주세요.

그리고 이용신청 해줍니다. 그럼 콘솔창으로 이동하는데

All Products누르면 뜨는 창에서 -AI.NAVER API를 누르면 창이 왼쪽 탭 아래처럼 생깁니다. 거기서 Application(왼쪽탭)으로 들어가 Applicatin창으로 이동 후

application등록을 눌러서 새로운 인스턴스를 만들어주세요.

저는 안드로이드 앱애만 적용시킬거라 Mobile Dynamic Map에 체크해주었습니다.

지금 네이버지도를 넣을 앱의 패키지명을 넣어서 등록시켜주고, 만들어주면

이처럼 인스턴스가 생깁니다. 인증정보 클릭해서

Client ID는 복사해주세요.

이제 안드로이드스튜디오로 돌아가서,

implementation 'com.naver.maps:map-sdk:3.4.0' 추가

maven {
url 'https://navercorp.bintray.com/maps'
}

추가

하고 Sync시켜준 후,

menifest에 아래와같이 meta-data 추가

xml에(저는 activity_main.xml)


<?xml version="1.0" encoding="utf-8"?>  
<android.support.constraint.ConstraintLayout xmlns:android\="[http://schemas.android.com/apk/res/android](http://schemas.android.com/apk/res/android)"  
xmlns:app\="[http://schemas.android.com/apk/res-auto](http://schemas.android.com/apk/res-auto)"  
xmlns:tools\="[http://schemas.android.com/tools](http://schemas.android.com/tools)"  
android:layout\_width="match\_parent"  
android:layout\_height="match\_parent"  
tools:context=".MainActivity"\>  



<fragment  
android:layout\_width="wrap\_content"  
android:layout\_height="wrap\_content"  
android:text="Hello World!"  
android:id="@+id/map"  
android:name="com.naver.maps.map.MapFragment"  
app:layout\_constraintBottom\_toBottomOf="parent"  
app:layout\_constraintLeft\_toLeftOf="parent"  
app:layout\_constraintRight\_toRightOf="parent"  
app:layout\_constraintTop\_toTopOf="parent" />  

</android.support.constraint.ConstraintLayout>

처럼 프래그먼트 하나 추가해줍니다.

이제 MainActivity.java의 편집없이 네이버지도가 fragment에 붙어서 나타납니다.

완료!

미래엔 적용시키는 방법이 달라질수도 있으니까 공식문서 http://docs.ncloud.com/ko/naveropenapi_v3/maps/android-sdk/v3/start.html 를 참고해주세요.


http://docs.ncloud.com/ko/naveropenapi_v3/maps/android-sdk/v3/migration.html 는 전체적인 android map api를 사용하는 방법에 대한 가이드가 있는데

1. 마이그레이션은 2.x버전을 쓰던 사람들이 3.x로 이동할 때 어떻게 해야하는지에 대한 가이드입니다.

2. 2번은 제가 위에서 한 것이구요(튜토리얼 느낌)

3. 3번은 네이버지도 개발 가이드(보다 심화) https://navermaps.github.io/android-map-sdk/guide-ko/0.html 이고

4. 4번은 https://navermaps.github.io/android-map-sdk/reference/ 네이버맵API을 javadoc로 만들어놓으신 것입니다.

그 아래부터는 IOS니까 참고하실 분들만 참고해주시구여!

다음 포스팅은 좌표 표시하는 방법에 대해 알아보도록 하겠습니다 ^ㅁ^


xml에 하면 후에메서드 체이닝이 불가능하므로, 이후에 xml로 지정하는 방법 말고 Activity에 배치해서 NaverMapOptions를 이용하여 지도의 초기 옵션을 설정하도록 했습니다.

NaverMapOptions는Parcelable이므로Bundle을 이용해 옵션을 저장하거나 불러올 수도 있습니다.

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">



    <FrameLayout
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

MainActivity.java


public class MainActivity extends FragmentActivity
        implements OnMapReadyCallback {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        NaverMapOptions options = new NaverMapOptions()
                .camera(new CameraPosition(new LatLng(35.1798159, 129.0750222), 8))
                .mapType(NaverMap.MapType.Terrain);


        FragmentManager fm = getSupportFragmentManager();
        MapFragment mapFragment = (MapFragment)fm.findFragmentById(R.id.map);
        if (mapFragment == null) {
            mapFragment = MapFragment.newInstance(options);
            fm.beginTransaction().add(R.id.map, mapFragment).commit();
        }

        mapFragment.getMapAsync(this);
    }

    @UiThread
    @Override
    public void onMapReady(@NonNull NaverMap naverMap) {

    }
}
반응형