구글맵 (Google Maps Android API v2)
1. 기본 설정
1) SDK 매니저
EXTRA에서 Google APIs by Google Inc가 인스톨 되어 있어야 한다.
2) 프로젝트 생성시 Google Map Activity도 있지만 실습을 위해 Empty Activity로 생성.
3) File-new-project structure를 선택한다. (Ctrl+Alt+Shift_S)
4) Project Structure 창이 뜨면 왼쪽 최하단 app 선택, 탭 중 dependency 선택한다. 다음 + 선택.
5) +를 눌러 모듈 추가: play-services:8.4.0를 선택한다.
2. 레이아웃
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.progdv.chap12_googlemap.MainActivity">
<LinearLayout
android:gravity="top|center"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:text="Google Map 서비스"
android:gravity="center"
android:textSize="20sp"
android:padding="20sp"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:text="이대역"
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
3. 구글맵 액티비티 생성 MapsActivity
java-new-Google-Google Maps Activity 선택
구글맵에서 마우스 우클릭으로 "이곳이 궁금한가요?"를 선택하면 위도와 경도값을 확인할 수 있다.
mMap = googleMap;
LatLng sydney = new LatLng(37.555362, 126.970670);
이렇게 해당 위도와 경도를 입력하면 된다.
package com.progdv.chap12_googlemap;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Sydney and move the camera
LatLng sydney = new LatLng(37.557016, 126.945868);
mMap.addMarker(new MarkerOptions().position(sydney).title("이대역"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
}
4. 메인 액티비티
ackage com.progdv.chap12_googlemap;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, MapsActivity.class);
startActivity(intent);
}
});
}
}
5. AndroidManifest.xml
AndroidManifest.xml에다 권한 추가
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<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_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION />
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<uses-library android:name="com.google.android.maps" />
c드라이브에 사용자 안에 android에 debug.keystore가 있다.
도스창에서 이 디렉토리로 들어온 뒤, keytool -list -v -keystore debug.keystore를 입력해줘야 한다.
여기에서 비밀번호 패스하고 보면 SHA1 키 번호를 볼 수 있는데 PC마다 다 다르게 나온다.
하지만 현재는 google_map_api.xml에서 해당 키 번호를 바로 확인할 수 있다.
6. google_map_api.xml
구글에 로그인 후 google_map_api.xml에서
https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=23:7D:EC:22:5A:67:7B:77:71:B4:54:13:C3:87:EA:5F:70:FD:AE:16%3Bcom.progdv.chap12_googlemap
이 항목을 브라우저 url 창에 붙여넣기 하면 다음과 같은 화면이 나온다.
동의 및 계속하기를 누르면...
API 키를 받는다.
다음 YOUR_KEY_HERE 라고 쓰여진 부분에 위의 키를 넣으면 된다.
이제 실행 후 버튼을 누르면 구글맵이 뜨게 된다.
'안드로이드' 카테고리의 다른 글
안드로이드 버전 하위 버전으로 변경 (0) | 2016.05.10 |
---|---|
안드로이드 네트워크(소켓): 버튼을 누르면 특정 사이트 코드 가져오기 (0) | 2016.05.09 |
XML 파서: XmlPullParser (0) | 2016.05.04 |
XML 파서: DOM파서, SAX파서 (0) | 2016.05.03 |
Asyncask 클래스 (0) | 2016.05.03 |