이전 학습: 위치기반 서비스

Google Map 개요

  1. Google Play Service 설정
  2. Google Maps API 키 가져오기
  3. 앱에 지도 추가 및 설정
  4. 지도에 마커 추가 및 설정
  5. 카메라 뷰 제어

1. Google Play Service 설정

.footnote[출처: https://developers.google.com/android/guides/releases]


2. Google Maps API 키 가져오기

Maps SDK for Android를 사용하려면 Google Cloud Platform Console에 앱 프로젝트를 등록하고 앱에 추가할 수 있는 Google API 키를 가져와야 합니다.

  1. Google Cloud Platform Console로 이동
  2. 프로젝트 만들기 (또는 선택)

  3. Maps SDK for Android 사용 설정하기

  4. 좌측상단의 메뉴 버튼 을 클릭하고 API 및 서비스 > 사용자 인증 정보를 선택합니다.

  5. 사용자 인증 정보 페이지에서 사용자 인증 정보 만들기 > API 키를 클릭합니다.

    API 키 생성 완료 대화상자에 새로 만든 API 키가 표시됩니다.

  6. 닫기를 클릭합니다. 새 API 키는 사용자 인증 정보 페이지의 API 키 아래 나열됩니다.

3. 앱에 지도 추가 및 설정

  1. Google Play 서비스 버전 번호 지정

  2. Google 지도 API 키 설정

  3. Activity에 지도를 위한 프레그먼트 추가

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:orientation="vertical">
        <fragment
            android:id="@+id/map"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:name="com.google.android.gms.maps.SupportMapFragment" />
    </LinearLayout>
  4. 앱 실행시키기


4. 지도에 마커 추가 및 설정

GoogleMap 객체를 사용할 수 있을 때 지도에 마커 및 기타 설정하기 위해서는 다음 절차를 진행

  1. MainActivity에서 OnMapReadyCallback 인터페이스를 구현

    public class MainActivity extends AppCompatActivity implements  OnMapReadyCallback {
        //...
        public void onMapReady(GoogleMap googleMap) {
    
        }
    }
  2. MapFragment (또는 MapView) 객체에 OnMapReadyCallback 인스턴스를 설정

    public class MainActivity extends AppCompatActivity implements OnMapReadyCallback{
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            //...
            SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.map);
            mapFragment.getMapAsync(this);
        }    
  3. OnMapReady(GoogleMap) 콜백 메서드를 사용하여 GoogleMap 객체의 획득

        public void onMapReady(GoogleMap googleMap) {
            LatLng hansung = new LatLng(37.5817891, 127.008175);
            googleMap.addMarker(new MarkerOptions().position(hansung).title("한성대학교"));
            // move the camera
            googleMap.moveCamera(CameraUpdateFactory.newLatLng(hansung));
    
        }

4.1 마커

4.2 마커 사용 예제

https://github.com/kwanulee/AndroidProgramming/blob/master/examples/SampleMapTest/app/src/main/java/com/kwanwoo/android/samplemaptest/MainActivity.java


5. 카메라 뷰 제어

5.1 카메라 이동

5.2 카메라 뷰 업데이트

private static final LatLng SYDNEY = new LatLng(-33.88,151.21);
private static final LatLng MOUNTAIN_VIEW = new LatLng(37.4, -122.1);

private GoogleMap map;
... // Obtain the map from a MapFragment or MapView.

// Move the camera instantly to Sydney with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(SYDNEY, 15));

// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomIn());

// Zoom out to zoom level 10, animating with a duration of 2 seconds.
map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);

[더 많은 예제: https://github.com/googlemaps/android-samples/blob/master/ApiDemos/java/app/src/gms/java/com/example/mapdemo/CameraDemoActivity.java]