빠른 시작 - 지도 추가하기

이 빠른 시작 가이드를 통해 지도를 표시하는 Android 앱을 만들 수 있습니다. Android 스튜디오는 Android용 Maps SDK로 앱을 구축하는 데 권장되는 개발 환경입니다.

1단계: Android 스튜디오 다운로드

가이드에 따라 Android 스튜디오를 다운로드하여 설치하세요.

2단계: Google Play 서비스 SDK 설치

Android 스튜디오에 Google Play 서비스를 추가합니다.

3단계: Google 지도 프로젝트 만들기

다음 단계에 따라 지도 활동을 포함한 새로운 앱 프로젝트를 생성합니다.

  1. Android 스튜디오를 시작합니다.
  2. 다음과 같이 새 프로젝트를 생성합니다.
    • Android 스튜디오 시작 대화상자가 표시되면 대화상자 오른쪽의 '빠른 시작 가이드(Quick Start)'에서 새 Android 스튜디오 프로젝트 시작(Start a new Android Studio project)을 선택합니다.
    • 그렇지 않으면 Android 스튜디오 메뉴 바에서 파일을 클릭한 후 새 파일, 새 프로젝트를 선택합니다.
  3. 프로젝트 선택(Choose your project) 대화상자에서 개발하려는 플랫폼에 해당하는 탭을 선택합니다. 대부분의 사용자는 기본 설정된 스마트폰 및 태블릿을 유지하려고 합니다.
  4. Google 지도 활동을 선택하고 다음을 클릭합니다.
  5. 앱 이름, 패키지 이름, 프로젝트 위치, 프로그래밍 언어(자바 또는 Kotlin), 앱에서 지원하는 최소 Android API 수준을 각각 입력한 후 마침를 클릭합니다.

Android 스튜디오가 Gradle을 시작하고 프로젝트를 빌드합니다. 몇 초 정도 걸릴 수 있습니다. Android 스튜디오에서 프로젝트를 만드는 방법에 관한 자세한 내용은 [Android 스튜디오 문서][studio-projects]를 참조하세요.

빌드가 완료되면 Android 스튜디오가 편집기에서 google_maps_api.xmlMapsActivity.java 파일을 엽니다. (활동의 이름은 다를 수 있으나 다만 설정 중에 구성한 활동이어야 합니다.) google_maps_api.xml 파일에는 애플리케이션을 실행하기 전에 Google 지도 API 키를 가져오는 방법에 대한 안내가 포함되어 있습니다. 다음 섹션에서는 API 키를 가져오는 방법에 대해 자세히 설명합니다

4단계: Google 지도 API 키 설정

  1. 프로젝트에서 결제를 사용 설정합니다. 자세한 내용은 결제 계정 만들기를 참고하세요.
  2. Cloud Console에서 프로젝트의 Android용 Maps SDK를 사용 설정합니다. 자세한 내용은 API 사용 설정을 참고하세요.
  3. API 키를 가져오고 추가하며 제한하려면 API 키 가져오기 가이드를 따르세요.

5단계: 코드 보기

템플릿에서 제공되는 코드를 살펴봅니다. 특히 Android 스튜디오 프로젝트에서 다음 파일을 살펴봅니다.

XML 레이아웃 파일

기본적으로 앱의 레이아웃을 정의하는 XML 파일은 res/layout/activity_maps.xml에 있습니다. 여기에는 다음 코드가 포함되어 있습니다.

<fragment 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:id="@+id/map"
    tools:context=".MapsActivity"
    android:name="com.google.android.gms.maps.SupportMapFragment" />

지도 활동 자바 파일

기본적으로 지도 활동을 정의하는 자바 파일의 이름은 MapsActivity.java입니다. 패키지 이름 뒤에 다음 코드가 포함되어야 합니다.

자바

// Copyright 2020 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.google.maps.example;

import androidx.appcompat.app.AppCompatActivity;

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 AppCompatActivity 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);
    }

    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     *
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        // Add a marker in Sydney and move the camera
        LatLng sydney = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions()
                .position(sydney)
                .title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
    }
}

      

Kotlin

// Copyright 2020 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.google.maps.example.kotlin

import androidx.appcompat.app.AppCompatActivity
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
import com.google.maps.example.R

internal class MapsActivity : AppCompatActivity(), OnMapReadyCallback {

    private lateinit var mMap: GoogleMap

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_maps)
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        val mapFragment = supportFragmentManager
            .findFragmentById(R.id.map) as SupportMapFragment
        mapFragment.getMapAsync(this)
    }

    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    override fun onMapReady(googleMap: GoogleMap) {
        mMap = googleMap

        // Add a marker in Sydney and move the camera
        val sydney = LatLng(-34.0, 151.0)
        mMap.addMarker(MarkerOptions()
            .position(sydney)
            .title("Marker in Sydney"))
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
    }
}
      

지도 활동 파일에 위의 코드가 포함되어 있지 않다면 패키지 이름 뒤의 파일 콘텐츠를 위의 코드로 바꿉니다.

6단계: Android 기기 연결

앱의 작동 상태를 확인할 수 있는 가장 간단한 방법은 Android 기기를 컴퓨터에 연결하는 것입니다. 안내에 따라 Android 기기에서 개발자 옵션을 사용 설정하고 기기를 감지하도록 애플리케이션과 시스템을 구성합니다.

또는 Android Emulator를 사용하여 앱을 실행할 수 있습니다. Android Virtual Device(AVD) Manager를 사용하여 앱을 빌드하고 실행할 때 Android Emulator와 함께 사용할 수 있는 가상 기기를 하나 이상 구성합니다. 에뮬레이터를 선택할 때는 Android 4.1.1 이상을 사용하고 Google API가 포함된 이미지를 선택해야 합니다. 그러지 않으면 애플리케이션에서 실행에 필요한 런타임 API를 사용할 수 없게 됩니다. 또한 가상 머신 가속 구성에 관한 안내 지침에 유의하세요. 이 구성은 안내 지침에 설명된대로 x86 대상 AVD와 함께 사용해야 합니다. 이렇게 하면 에뮬레이터 사용 환경이 개선됩니다.

7단계: 앱 배포 및 실행하기

Android 스튜디오에서 Run 메뉴 옵션(또는 재생 버튼 아이콘)을 클릭하여 앱을 실행합니다.

기기를 선택하라는 메시지가 나타나면 다음 옵션 중 하나를 선택합니다.

  • 컴퓨터에 연결된 Android 기기를 선택합니다.
  • 또는 에뮬레이터 실행 라디오 버튼을 선택하고 이전에 구성한 가상 기기를 선택합니다.

확인을 클릭합니다. Android 스튜디오에서 Gradle을 호출하여 앱을 빌드한 후 그 결과를 기기 또는 에뮬레이터에 표시합니다. 앱이 열리기까지 몇 분 정도 걸릴 수 있습니다.

다음 단계

몇 가지 샘플 코드를 확인해 보시기 바랍니다.

지도 객체에 대한 자세한 내용은 개발자 가이드를 참고하세요.