Android

Google Maps Andoird API V2 사용

macro 2013. 9. 28. 14:13
반응형

1. 먼저 API 키를 얻어야 한다.

https://code.google.com/apis/console 로 이동하여,

- 왼쪽 상단의 셀렉트바를 선택하여, Create 를 눌러서 프로젝트를 생성한다.

- 왼쪽의 항목들 중에, Services 항목에 들어가서 Google Cloud Messaging for Android 를 On 시킨다.

- 왼쪽의 항목들 중에, API Access 항목에 들어가서     

 

를 눌러서 내 키스토어의 sha1 값을 가져온다. 이때, 먼저 내 키스토어를 만들어 놓은 상태여야 한다!

$ keytool -list -v -keystore 내키스토어파일명

여기서 나온 sha1값을 넣고, 내가 사용하고자 하는 안드로이드 앱 패키지 명을 넣는다. 

즉, 45:B5:E4:6F:36:AD:0A:98:94:B4:02:66:2B:12:17:F2:56:26:A0:E0;com.example

위와 같은 형식으로 세미콜론을 sha1값과 패키지명 사이에 넣어주고 Create 해주면 API 키가 생성된다.


2. 이클립스에서

- Androd SDK Manager 를 실행하여, Google Play Services SDK 를 인스톨한다.

- 인스톨 되면 내 컴의 <android-sdk>/extras/google/google_play_services   경로에 이렇게 프로젝트가 깔린다.

- 이제 이클립스에서 프로젝트를 하나 가져온다. 이는 Android Project from Existing Code 로 프로젝트를 가져오면 된다.

<android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/ 이 경로를 입력하여 프로젝트를 생성하면 이클립스에 생성된다.

- 내가 맵을 넣고자 하는 프로젝트에서, 위의 프로젝트를 임포트 해준다. 방법은, 맵을 넣고자 하는 내가 만든 프로젝트 - > Properties -> Android -> Library 에서 Add 버튼을 누르면, google-play-services 나오고 이를 선택하면 임포트가 완료!


3. 맵을 넣고자 하는 내가 만든 프로젝트 소스에서

- android menifest file 에 다음을 추가

<permission android:name="com.oca.oca.permission.MAPS_RECEIVE" android:protectionLevel="signature">

    </permission>

    <uses-permission android:name="com.oca.oca.permission.MAPS_RECEIVE"/>

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


<application> 항목 자식항목에다 아래 추가. API 키는 위의 1번에서 생성한 API 키를 넣는다.

<meta-data

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

            android:value="API KEY" />


- 맵을 띄울 xml 파일에 다음을 추가. 레이아웃 안에다가 다음 프레그먼트를 원하는 위치에 넣으면 되겠다.

<fragment

            android:id="@+id/mapview"

            android:name="com.google.android.gms.maps.MapFragment"

            android:layout_width="match_parent"

            android:layout_height="match_parent" />


- 소스 java 파일에서, 맵 불러서, 화면에 마커 표시하고 줌 표시하기.

public class TargetMap extends Activity {

GeoPoint gp;

MapView map_view;

String addr;

private GoogleMap mMap;

@Override

protected void onCreate(Bundle arg0) {

// TODO Auto-generated method stub

super.onCreate(arg0);

setContentView(R.layout.target_map);

getActionBar().setTitle("지도");

getActionBar().setDisplayHomeAsUpEnabled(true);


Bundle bundle = getIntent().getExtras();

double lat = bundle.getDouble("lat");

double lon = bundle.getDouble("lon");

addr = bundle.getString("addr");

mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.mapview)).getMap();

mMap.addMarker(new MarkerOptions()

       .position(new LatLng(lat, lon))

       .title(addr));

mMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(lat, lon)));

mMap.animateCamera(CameraUpdateFactory.zoomTo(16));

TextView txt_title = (TextView)findViewById(R.id.select_title);

txt_title.setText(addr);


}


}









반응형