모든 준비를 마쳤습니다!

개발을 시작하려면 개발자 문서로 이동하세요.

Google Maps Android API 활성화

개발을 시작하기 위해 Google Developers Console에서 우선적으로 해야 할 일을 몇 가지 소개하겠습니다.

  1. 프로젝트 생성 또는 선택
  2. Google Maps Android API 활성화
  3. 적합한 키 생성
계속

위치 데이터

모바일 애플리케이션의 고유한 기능 중 하나는 위치 인식입니다. 모바일 사용자는 어디에나 자신의 기기를 가져갑니다. 앱에 위치 인식을 추가하면 사용자에게 더욱 상황에 맞는 경험을 제공할 수 있습니다.

코드 샘플

Github의 ApiDemos 리포지토리에는 지도에서 위치 사용법을 보여주는 샘플이 포함되어 있습니다.

위치 데이터 사용

Android 기기가 사용할 수 있는 위치 데이터에는 기기의 현재 위치(여러 기술을 조합해서 정확한 지점을 찾아냄), 이동 방향과 방법, 기기가 사전 지정된 지리적 경계 또는 지오펜스(geofence)를 넘어갔는지 여부 등이 포함됩니다. 애플리케이션의 필요에 따라 여러 가지 위치 데이터 사용 방식 중에서 선택할 수 있습니다.

  • My Location 계층은 지도에 기기의 위치를 표시하는 간단한 방법을 제공합니다. 이 계층은 데이터를 제공하지 않습니다.
  • Google Play 서비스 Location API는 모든 프로그래밍 방식의 위치 데이터 요청에 권장됩니다.
  • LocationSource 인터페이스를 통해 사용자 지정 위치 제공자를 제공할 수 있습니다.

위치 권한

앱이 사용자 위치에 액세스해야 하는 경우, 앱에 관련 Android 위치 권한을 추가하여 권한을 요청해야 합니다.

Android는 ACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION이라는 두 가지 위치 권한을 제공합니다. 선택한 권한에 따라 API가 반환하는 위치의 정확도가 결정됩니다. 필요한 정확도에 따라 Android 위치 권한 중 하나만 요청해야 합니다.

  • android.permission.ACCESS_COARSE_LOCATION – API가 Wi-Fi 또는 이동통신 데이터(또는 모두)를 사용하여 기기의 위치를 판별할 수 있습니다. API는 도시 블록 1개 정도의 오차로 위치를 반환합니다.
  • android.permission.ACCESS_FINE_LOCATION – API가 이용 가능한 위치 제공자에서 최대한 정확한 위치를 판별할 수 있습니다. 위치 제공자에는 GPS(Global Positioning System)와 Wi-Fi, 이동통신 데이터가 포함됩니다.

앱 매니페스트에 권한 추가

Android 매니페스트에 다음 권한 중 하나<manifest>의 하위 요소로 추가합니다. 대략적 위치 권한:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp" >
  ...
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  ...
</manifest>

상세한 위치 권한:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp" >
  ...
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  ...
</manifest>

런타임 권한 요청

Android 6.0(Marshmallow)에서는 권한 처리를 위한 새로운 모델을 소개합니다. 이를 통해 사용자가 앱을 설치하고 업그레이드할 때 과정을 간소화할 수 있습니다. API 레벨 23 이상을 대상으로 앱을 개발하는 경우, 새 권한 모델을 사용해야 합니다.

앱이 새 권한 모델을 지원하고 기기가 Android 6.0(Marshmallow) 이상에서 실행되는 경우, 사용자가 앱을 설치하거나 업그레이드할 때 아무런 권한도 부여할 필요가 없습니다. 앱은 런타임에 필요한 권한이 있는지 확인하고, 권한이 없으면 요청해야 합니다. 시스템은 사용자에게 권한을 요청하는 대화상자를 표시합니다.

최고의 사용자 경험을 제공하려면 상황에 따라 권한을 요청하는 것이 중요합니다. 위치가 앱의 기능에 반드시 필요하다면 앱 시작 시에 위치 권한을 요청해야 합니다. 좋은 방법은 시작 화면이나 마법사를 통해 사용자에게 권한이 필요한 이유를 설명하는 것입니다.

앱이 기능의 일부에 대해서만 위치 권한이 필요한 경우, 권한이 필요한 작업을 수행할 때 위치 권한을 요청해야 합니다.

앱은 사용자가 권한을 허용하지 않는 경우 이를 적절히 처리해야 합니다. 예를 들어, 특정 기능에 대해 권한이 필요한 경우 앱이 해당 기능을 비활성화할 수 있습니다. 해당 권한이 앱이 제대로 작동하는 데 꼭 필요한 경우, 앱이 자신의 기능을 모두 비활성화하고 사용자에게 해당 권한을 허용해야 한다는 메시지를 표시할 수도 있습니다.

다음 코드 샘플은 My Location 계층을 활성화하기 전에 지원 라이브러리를 사용하여 권한을 확인합니다.

if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
    mMap.setMyLocationEnabled(true);
} else {
    // Show rationale and request permission.
}

다음 샘플은 지원 라이브러리에서 ActivityCompat.OnRequestPermissionsResultCallback 을 구현하여 권한 요청 결과를 처리합니다.

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (requestCode == MY_LOCATION_REQUEST_CODE) {
      if (permissions.length == 1 &&
          permissions[0] == Manifest.permission.ACCESS_FINE_LOCATION &&
          grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        mMap.setMyLocationEnabled(true);
    } else {
      // Permission was denied. Display an error message.
    }
}

더 많은 코드 샘플과 Android 런타임 권한 모범 사례를 보려면 Android 권한 모델 문서를 참조하세요.

My Location 계층

My Location 계층과 My Location 버튼을 사용하여 사용자에게 지도 상의 현재 위치를 제공할 수 있습니다.

참고: My Location 계층을 활성화하기 전에 필요한 런타임 위치 권한이 있는지 확인해야 합니다.

다음과 같이 지도에서 My Location 계층을 활성화합니다.

mMap.setMyLocationEnabled(true);

Location 계층이 활성화되면 My Location 버튼이 지도 오른쪽 위 모서리에 나타납니다. 사용자가 버튼을 클릭했을 때 현재 위치를 알 경우, 카메라가 기기의 현재 위치를 지도의 중앙에 표시합니다. 기기가 정지해 있을 때는 위치가 지도 위에 작은 파란 점으로 나타나고, 이동 중일 때는 V자 기호로 나타납니다.

My Location 버튼

클릭하면 GoogleMap.OnMyLocationButtonClickListener도 트리거됩니다.

UiSettings.setMyLocationButtonEnabled(false)를 호출하여 아예 버튼이 나타나지 않게 할 수 있습니다.

참고로 My Location 계층은 데이터를 반환하지 않습니다. 프로그래밍 방식으로 위치 데이터에 액세스하려면 Location API를 사용합니다.

Google Play 서비스 Location API

Android 애플리케이션에 위치 인식을 추가하려면 Google Play 서비스 Location API를 사용하는 것이 좋습니다. 이 API에는 다음 기능이 포함되어 있습니다.

  • 기기의 위치를 판별합니다.
  • 위치 변경을 수신합니다.
  • 기기가 이동 중일 때 교통수단을 판별합니다.
  • 지오펜스(geofence)라는 사전 정의된 지리적 지역을 생성, 모니터링합니다.

위치 API를 사용하면 효율적으로 전력을 소비하는 위치 인식 애플리케이션을 쉽게 제작할 수 있습니다. Google Maps Android API처럼 Location API도 Google Play 서비스 SDK의 일부로 배포됩니다. Location API에 대한 자세한 내용은 Android 교육 과정 위치를 인식하는 앱 제작 또는 Location API 참조를 참조하세요. 코드 예시는 Google Play 서비스 SDK의 일부로 포함되어 있습니다.

다음에 대한 의견 보내기...

Google Maps Android API
Google Maps Android API
도움이 필요하시나요? 지원 페이지를 방문하세요.