Dev./Android

Google Maps Android API v2 시작하기

like miller 2012. 12. 27. 16:34

마이샵



안드로이드에서 사용하는 구글의 map API의 version 2가 나왔다. (2012년 12월 4일)


Version 2의 특징

1. 3D 맵.(건물들이 3D로 됨.)

2. 벡터 기반의 지도

3. 실내 지도 기능

4. MapView 대신 MapFragment 사용 (MapActivity를 사용하지 않아도 된다.)

* 3.0 이전 버전에서는 Support Library를 이용하여야 한다. Activity 대신 FragmentActivity를 사용.

  MapFragment 대신 SupportMapFragment 사용.



1. Google-play-services 라이브러리 설치.

기존의 구글 맵을 사용할 때와 달리 이번에는 추가적이 라이브러리를 필요로 한다.

SDK Manager를 이용하여 Google Play Services 라이브러리를 설치한다.

다운 받을 때 support library를 아직 받지 않았다면 함께 받는다.





2. Google Maps Android API v2 신청하기

ㄱ. 먼저 Google APIs Console 페이지로 이동한다. (로그인 안되어 있으면 로그인 하기)


ㄴ. 구글 api를 사용한 적이 없으면 아래와 같은 화면이 나온다. 그러면 Create Project 버튼을 누른다.




ㄷ. 구글 서비스 목록으로 이동하여 Google Maps Android API v2 를 활성화 시킨다.







3. API KEY 발급 받기

ㄱ. 왼쪽 메뉴 중 API Access 로 이동한다.


ㄴ. 하단의 Create New Android Key 버튼을 클릭한다.



ㄷ. API KEY 발급을 위한 서명에 사용할 keystore의 지문과 앱의 패키지 명을 설정한다.


*참고로 JDK 1.7에서는 기본으로 sha-1 지문이 나오고 이전 버전에서는 MD5 지문이 나온다. JDK 1.6 이하에서는 다음과 같이 하면 SHA-1 지문을 얻을 수 있다.

keytool -list -alias andoriddebugkey -keystore debug.keystore -storepass android -keypass android -v


자세한 내용은 JDK 1.7 에서 맵 키 발급 받기를 참고하세요.




ㄹ. API KEY 발급 완료!!

*사진에서 처럼 API KEY는 앱 별로 따로 발급받아서 사용해야 된다.



4. Manifest.xml 에 맵 사용하기 위한 설정

ㄱ. API KEY 등록

<application> 태그 안에 발급받은 API KEY를 등록한다.

<meta-data

      android:name="com.google.android.maps.v2.API_KEY"

      android:value="발급받은 API KEY" />


*실제 적용 코드

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
       
        <meta-data

               android:name="com.google.android.maps.v2.API_KEY"

              android:value="AIzaSyC3rdMoXNXuNa1grgfa-4aWWOBHZxZJW4A"/>
       
        <activity
            android:name="pe.sbk.googlemap2.MapActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>



ㄴ. Permission 추가

<permission

    android:name="자신의 패키지명.permission.MAPS_RECEIVE"

    android:protectionLevel="signature"/>

<uses-permission android:name="자신의 패키지.permission.MAPS_RECEIVE"/>



ㄷ. 맵을 사용하는데 필요한 permission 사용 선언

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>



ㄹ. open gl es verion 2 사용.

이번 맵에서는 Open GL을 필요로 하기 때문에 추가 해 줘야 한다.

<uses-feature android:glEsVersion="0x00020000" android:required="true"/>



5. xml에 맵 추가하기.

Google Maps Android API v2 에서는 Fragment 를 사용하기 때문에 xml에 코딩 할 때에도 MapView 가 아닌 Fragment를 사용해야 한다.


<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.MapFragment"/>


만약 3.0 이전 버전에서도 돌아가게 하려면 class 를 MapFragment 대신 SupportMapFragment로 해주어야 한다.

<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment"/>


6. 실행하기

public class MapActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}


3.0 이전 버전에서는 Activity 대신에 FragmentActivity를 사용한다.

public class MapActivity extends FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}




대부분 잘 될 테지만 에러나 Exception은 발생하지 않지만 맵이 나오지 않는 경우가 있다.

그런 경우 로그를 한번 보자!!






만약 위의 사진처럼 로그에 Google Maps applications is missing 이라고 나왔다면 당장 Play Store에서 구글 지도 앱을 설치해 보자.

그 후 다시 실행한다면 지도가 잘 나올 것이다.


GoogleMap2.zip

전체 샘플 코드 첨부하였습니다.

*글과 자료는 출처만 밝히시면 얼마든지 가져다 쓰셔도 됩니다


GoogleMap2.zip
1.06MB