아이콘이 포함된 지도 추가하기

이 가이드에서는 Android 앱에 Google 지도를 추가하는 방법을 설명합니다. 지도에는 특정 위치를 나타내는 아이콘(핀이라고도 함)이 포함됩니다.

가이드의 설명에 따라 Maps SDK for Android를 사용하여 Android 앱을 빌드합니다. 권장되는 개발 환경은 Android 스튜디오입니다.

코드 가져오기

GitHub에서 Google Maps Android API v2 샘플 저장소를 복제하거나 다운로드합니다.

개발 프로젝트 설정

다음 단계에 따라 Android 스튜디오에서 가이드 프로젝트를 만듭니다.

  1. Android 스튜디오를 다운로드하여 설치합니다.
  2. Android 스튜디오에 Google Play 서비스 패키지를 추가합니다.
  3. 이 가이드를 읽기 전에 미리 하지 않은 경우 Google Maps Android API v2 샘플 저장소를 복제하거나 다운로드합니다.
  4. 가이드 프로젝트를 가져옵니다.

    • Android 스튜디오에서 File > New > Import Project를 선택합니다.
    • Google Maps Android API v2 샘플 저장소를 다운로드한 후 저장한 위치로 이동합니다.
    • 다음 위치에서 MapWithMarker 프로젝트를 찾습니다.
      PATH-TO-SAVED-REPO/android-samples/tutorials/MapWithMarker
    • 프로젝트 디렉터리를 선택한 다음 OK를 클릭합니다. 이제 Android 스튜디오에서 Gradle 빌드 도구를 사용하여 프로젝트를 빌드합니다.

API 키 가져오기 및 필요한 API 사용 설정

이 가이드를 완료하려면 Maps SDK for Android를 사용할 수 있도록 승인된 Google API 키가 필요합니다.

다음 버튼을 클릭하여 키를 가져오고 API를 활성화합니다.

시작하기

자세한 내용은 API 키 가져오기에 관한 전체 가이드를 참고하세요.

앱에 API 키 추가

  1. 프로젝트의 gradle.properties 파일을 수정합니다.
  2. API 키를 GOOGLE_MAPS_API_KEY 속성의 값에 붙여넣습니다. 앱을 빌드할 때 Gradle에서 아래 설명된 대로 API 키를 앱의 Android 매니페스트에 복사합니다.

    GOOGLE_MAPS_API_KEY=PASTE-YOUR-API-KEY-HERE
    

앱 빌드 및 실행

  1. 컴퓨터에 Android 기기를 연결합니다. 안내에 따라 Android 기기에서 개발자 옵션을 사용 설정하고 기기를 감지하도록 시스템을 구성합니다. (또는 Android Virtual DeviceAndroid(AVD) Manager를 사용하여 가상 기기를 구성할 수 있습니다. 에뮬레이터를 선택할 때 Google API가 포함된 이미지를 선택해야 합니다. 자세한 내용은 시작 가이드를 참고하세요.)
  2. Android 스튜디오에서 Run 메뉴 옵션(또는 재생 버튼 아이콘)을 클릭합니다. 표시되는 메시지에 따라 기기를 선택합니다.

Android 스튜디오에서 Gradle을 호출하여 앱을 빌드한 다음 기기 또는 에뮬레이터에서 앱을 실행합니다. 이 페이지의 이미지와 비슷하게, 오스트레일리아의 동쪽 해안에 있는 시드니를 가리키는 아이콘이 있는 지도가 표시됩니다.

문제해결:

코드 이해하기

여기에서는 유사한 앱을 빌드하는 방법을 이해할 수 있도록 MapWithMarker 앱의 가장 중요한 부분을 설명합니다.

Android 매니페스트 확인

앱의 AndroidManifest.xml 파일에서 다음 요소를 확인합니다.

  • meta-data 요소를 추가하여 앱이 컴파일된 Google Play 서비스의 버전을 삽입합니다.

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    
  • API 키를 지정하는 meta-data 요소를 추가합니다. 이 가이드에 포함된 샘플에서는 API 키의 값을 google_maps_key 문자열로 매핑합니다. 앱을 빌드할 때 Gradle에서 프로젝트의 gradle.properties 파일에 있는 API 키를 문자열 값에 복사합니다.

    <meta-data
      android:name="com.google.android.geo.API_KEY"
      android:value="@string/google_maps_key" />
    

    API 키가 문자열 값에 매핑되는 방식은 앱의 build.gradle을 확인하세요. 다음과 같이 google_maps_key 문자열을 GOOGLE_MAPS_API_KEY gradle 속성으로 매핑하는 행이 포함되어 있습니다.

      resValue "string", "google_maps_key",
              (project.findProperty("GOOGLE_MAPS_API_KEY") ?: "")
    

다음은 전체 매니페스트의 예입니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mapwithmarker">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <!--
             The API key for Google Maps-based APIs.
        -->
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_maps_key" />

        <activity
            android:name=".MapsMarkerActivity"
            android:label="@string/title_activity_maps">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

지도 추가

Maps SDK for Android를 사용하여 지도를 표시합니다.

  1. 활동의 레이아웃 파일인 activity_maps.xml<fragment> 요소를 추가합니다. 이 요소는 지도의 컨테이너 역할을 하고 GoogleMap 객체에 대한 액세스 권한을 제공하도록 SupportMapFragment를 정의합니다. 이 가이드에서는 이전 버전 Android 프레임워크와의 호환성을 보장하기 위해 지도 프래그먼트의 Android 지원 라이브러리 버전을 사용합니다.

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.mapwithmarker.MapsMarkerActivity" />
    
    
  2. 활동의 onCreate() 메서드에서 레이아웃 파일을 콘텐츠 뷰로 설정합니다. FragmentManager.findFragmentById()를 호출하여 지도 프래그먼트의 핸들을 가져옵니다. 그런 다음 getMapAsync()를 사용하여 지도 콜백에 등록합니다.

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Retrieve the content view that renders the map.
        setContentView(R.layout.activity_maps);
        // Get the SupportMapFragment and request notification
        // when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }
    
  3. OnMapReadyCallback 인터페이스를 구현하고 GoogleMap 객체를 사용할 수 있을 때 지도를 설정하도록 onMapReady() 메서드를 재정의합니다.

    public class MapsMarkerActivity extends AppCompatActivity
            implements OnMapReadyCallback {
        // Include the OnCreate() method here too, as described above.
        @Override
        public void onMapReady(GoogleMap googleMap) {
            // Add a marker in Sydney, Australia,
            // and move the map's camera to the same location.
            LatLng sydney = new LatLng(-33.852, 151.211);
            googleMap.addMarker(new MarkerOptions().position(sydney)
                    .title("Marker in Sydney"));
            googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
        }
    }
    

기본적으로 Maps SDK for Android는 사용자가 아이콘을 탭할 때 정보 창의 콘텐츠를 표시합니다. 기본 동작 사용만으로 충분한 경우 아이콘에 클릭 리스너를 추가할 필요가 없습니다.

다음 단계

지도 객체아이콘으로 할 수 있는 작업에 대해 자세히 알아보세요.