Android용 Google 지도 인텐트

Android용 Google 지도 앱 Google 지도를 디스플레이에 실행하는 데 사용할 수 있는 여러 인텐트를 노출하고, 검색, 내비게이션 또는 스트리트 뷰 모드를 사용할 수 있습니다 원하는 경우 앱에 지도를 삽입하려면 Google Maps Android API를 참조하세요. 시작 가이드.

개요

인텐트를 사용하면 간단한 작업을 설명하여 다른 앱에서 활동을 시작할 수 있음 '지도 표시' 또는 '목적지까지의 경로 표시'와 같이 공항')에 Intent 객체를 지정합니다. 이 Android용 Google 지도 앱 여러 가지 인텐트를 지원하므로 Google 지도 앱을 그리고 다음 네 가지 작업 중 하나를 수행합니다.

  1. 특정 위치 및 확대/축소 수준에서 지도를 표시합니다.
  2. 위치나 장소를 검색하여 지도에 표시합니다.
  3. 한 위치에서 다른 위치로의 경로를 요청합니다. 경로를 반환할 수 있습니다. 세 가지 이동 수단(운전, 도보, 자전거)
  4. Google 스트리트 뷰에 파노라마 이미지를 표시합니다.

이 페이지에서는 Google 지도 앱과 함께 사용할 수 있는 인텐트를 Android 인텐트 및 인텐트 필터 또는 Android에 공통된 인텐트 플랫폼에 대한 자세한 내용은 Android 개발자 문서를 참조하세요.

인텐트 요청

인텐트가 포함된 Google 지도를 실행하려면 먼저 Intent 객체에 대해 작업, URI 및 패키지를 지정합니다.

  • 작업: 모든 Google 지도 인텐트가 뷰 작업으로 호출됩니다. ACTION_VIEW입니다.
  • URI: Google 지도 인텐트는 URL 인코딩된을 사용하여 원하는 작업을 수행하는 데 사용되는 일부 데이터와 함께 표시됩니다.
  • 패키지: setPackage("com.google.android.apps.maps")에 전화를 걸면 Android용 Google 지도 앱이 인텐트를 처리하는지 확인합니다. 만약 패키지가 설정되지 않은 경우 시스템에서 어떤 앱을 처리할지 결정합니다. Intent 여러 앱을 사용할 수 있는 경우 사용자에게 어떤 앱을 사용할지 묻는 메시지가 표시될 수 있습니다. 선택할 수 있습니다

Intent를 만든 후 시스템에서 관련 앱을 개발하는 데 사용할 수 있습니다. 일반적인 메서드는 IntentstartActivity() 메서드를 사용하여 축소하도록 요청합니다. 시스템에서 필요한 앱(이 경우 Google)을 실행합니다. Google 지도로 이동하여 해당하는 Activity를 찾습니다.

자바

// Create a Uri from an intent string. Use the result to create an Intent.
Uri gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988");

// Create an Intent from gmmIntentUri. Set the action to ACTION_VIEW
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
// Make the Intent explicit by setting the Google Maps package
mapIntent.setPackage("com.google.android.apps.maps");

// Attempt to start an activity that can handle the Intent
startActivity(mapIntent);

Kotlin

// Create a Uri from an intent string. Use the result to create an Intent.
val gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988")

// Create an Intent from gmmIntentUri. Set the action to ACTION_VIEW
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
// Make the Intent explicit by setting the Google Maps package
mapIntent.setPackage("com.google.android.apps.maps")

// Attempt to start an activity that can handle the Intent
startActivity(mapIntent)

시스템이 인텐트에 응답할 수 있는 앱을 식별하지 못하면 작동이 중단될 수 있습니다 따라서 게시자는 먼저 애플리케이션이 설치되어야 합니다.

앱이 인텐트를 수신할 수 있는지 확인하려면 다음을 호출합니다. resolveActivity() Intent 객체를 지정합니다. 결과가 null이 아닌 경우 호출해도 안전합니다. startActivity() 결과가 null이면 이 인텐트를 사용해서는 안 되며, 가능하면 인텐트를 호출하는 기능을 중지해야 합니다.

자바

if (mapIntent.resolveActivity(getPackageManager()) != null) {
  ...
}

Kotlin

mapIntent.resolveActivity(packageManager)?.let {
  ...
}

예를 들어, 샌프란시스코의 지도를 표시할 때 다음 코드를 사용할 수 있습니다.

자바

Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
  startActivity(mapIntent);
}

Kotlin

val gmmIntentUri = Uri.parse("geo:37.7749,-122.4194")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
mapIntent.resolveActivity(packageManager)?.let {
  startActivity(mapIntent)
}

URL로 인코딩된 쿼리 문자열

Google Maps 인텐트에 전달되는 모든 문자열은 URI 인코딩되어야 합니다. 예를 들어 문자열 '1st & 파이크, 시애틀') 1st%20%26%20Pike%2C%20Seattle가 됩니다. 문자열 내의 공백은 %20으로 인코딩하거나 더하기 부호(+)로 대체할 수 있습니다.

android.net.Uri parse() 메서드를 사용하여 문자열을 인코딩할 수 있습니다. 예를 들면 다음과 같습니다.

Java

Uri gmmIntentUri =
  Uri.parse("geo:37.7749,-122.4192?q=" + Uri.encode("1st & Pike, Seattle"));

Kotlin

val gmmIntentUri =
  Uri.parse("geo:37.7749,-122.4192?q=" + Uri.encode("1st & Pike, Seattle"))

지도 표시

geo: 인텐트를 사용하여 지정된 위치와 확대/축소 수준으로 지도를 표시합니다.

geo:latitude,longitude?z=zoom

매개변수

  • latitudelongitude는 지도의 중심점을 설정합니다.
  • z는 지도의 초기 확대/축소 수준을 선택적으로 설정합니다. 허용되는 값 범위 0 (전 세계)에서 21 (개별 건물)까지. 상한값은 선택한 위치에서 사용할 수 있는 지도 데이터에 따라 달라집니다.

예시

자바

// Creates an Intent that will load a map of San Francisco
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

// Creates an Intent that will load a map of San Francisco
val gmmIntentUri = Uri.parse("geo:37.7749,-122.4194")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

위치 검색

이 인텐트를 사용하여 지정된 뷰포트 내에 검색 쿼리를 표시합니다. 이 이 인텐트를 사용하여 명소, 업체, 지형지물, 찾을 수 있습니다.

geo:latitude,longitude?q=query
geo:0,0?q=my+street+address
geo:0,0?q=latitude,longitude(label)

매개변수

Google 검색은 지도를 표시하는 데 사용되는 매개변수 이외에도 다음과 같습니다.

  • q은 지도에서 강조 표시할 장소를 정의합니다. q 매개변수는 다음과 같습니다. 필수사항입니다. 위치를 장소나 찾을 수 있습니다. 문자열은 URL로 인코딩되어야 합니다. 'City Hall, New York, NY'과 같은 주소 는 City+Hall,New+York,NY.

  • label를 사용하면 지도에서 식별된 장소에 맞춤 라벨을 설정할 수 있습니다. 이 label은(는) 문자열로 지정해야 합니다.

일반 검색어를 전달하면 Google 지도에서 위치를 찾으려고 시도합니다. 지정한 위도/경도 근처에 가 있습니다. 위치가 없는 경우 지정하면 Google 지도는 주변 목록을 찾으려고 시도합니다. 예를 들면 다음과 같습니다.

Java

// Search for restaurants nearby
Uri gmmIntentUri = Uri.parse("geo:0,0?q=restaurants");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

// Search for restaurants in San Francisco
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?q=restaurants");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

// Search for restaurants nearby
val gmmIntentUri = Uri.parse("geo:0,0?q=restaurants")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

// Search for restaurants in San Francisco
val gmmIntentUri =
  Uri.parse("geo:37.7749,-122.4194?q=restaurants")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

샌프란시스코 음식점 검색

확대/축소 매개변수를 함께 지정하여 검색 결과를 추가로 편중할 수 있습니다. 를 검색어 문자열로 바꿉니다. 아래 예에서는 확대/축소를 10으로 추가하여 을 검색하면 근처가 아닌 도시 수준의 음식점을 찾을 수 있습니다.

자바

Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?z=10&q=restaurants");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

val gmmIntentUri =
  Uri.parse("geo:37.7749,-122.4194?z=10&q=restaurants")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

특정 주소를 검색하면 그 장소에 핀을 표시합니다.

자바

Uri gmmIntentUri = Uri.parse("geo:0,0?q=1600 Amphitheatre Parkway, Mountain+View, California");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

val gmmIntentUri =
  Uri.parse("geo:0,0?q=1600 Amphitheatre Parkway, Mountain+View, California")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

위의 예에서는 위도/경도를 0,0로 설정하지만 주소를 쿼리로 전달합니다. 문자열. 매우 구체적인 위치를 검색하는 경우 위도와 경도는 필수는 아닙니다. 하지만 정확한 주소를 모르는 경우 좌표를 지정하여 검색 결과에 편중을 시도합니다. 대상 예: '강남대로' 주소 검색 너무 많은 결과가 반환됨 있습니다.

자바

// Searching for 'Main Street' will return too many results
Uri gmmIntentUri = Uri.parse("geo:0,0?q=101+main+street");

Kotlin

// Searching for 'Main Street' will return too many results
val gmmIntentUri = Uri.parse("geo:0,0?q=101+main+street")

인텐트 URI에 위도/경도를 추가하면 결과가 특정 영역:

자바

// Searches for 'Main Street' near San Francisco
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?q=101+main+street");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

// Searches for 'Main Street' near San Francisco
val gmmIntentUri =
  Uri.parse("geo:37.7749,-122.4194?q=101+main+street")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

검색에서 단일 값을 반환한다는 사실을 알고 있는 경우 선택 사항입니다. 라벨은 문자열로 지정해야 하며 지도 마커 라벨은 q이 위도/경도 좌표입니다.

자바

// Display a label at the location of Google's Sydney office
Uri gmmIntentUri = Uri.parse("geo:0,0?q=Google+Sydney@-33.8666,151.1957");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

// Display a label at the location of Google's Sydney office
val gmmIntentUri =
  Uri.parse("geo:0,0?q=-33.8666,151.1957(Google+Sydney)")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

상세 주소 또는 위도/경도 대신 를 사용하여 알려진 위치에 핀을 표시합니다. Plus Code를 사용합니다.

자바

// Display the location of Google, San Francisco using a global plus code.
Uri gmmIntentUri = Uri.parse("http://plus.codes/849VQJQ5+XX");
// Equivalently, define the same location using a local plus code
gmmIntentUri = Uri.parse("https://plus.codes/QJQ5+XX,San%20Francisco");
// Construct and use the Intent as in the examples above

Kotlin

// Display the location of Google, San Francisco using a global plus code.
var gmmIntentUri = Uri.parse("http://plus.codes/849VQJQ5+XX")
// Equivalently, define the same location using a local plus code
gmmIntentUri = Uri.parse("https://plus.codes/QJQ5+XX,San%20Francisco")
// Construct and use the Intent as in the examples above

세부 경로 안내 내비게이션 시작

이 인텐트를 사용하여 세부 경로 안내로 Google 지도 내비게이션을 실행합니다. 지정된 주소 또는 좌표로 복사됩니다. 경로는 항상 사용자의 현재 위치

google.navigation:q=a+street+address
google.navigation:q=latitude,longitude

매개변수

  • q: 내비게이션 검색의 도착 지점을 설정합니다. 이 값은 위도, 경도 좌표 또는 쿼리 형식 주소입니다. 쿼리인 경우 둘 이상의 결과를 반환하는 문자열인 경우 첫 번째 결과는 선택합니다.

  • mode: 교통수단을 설정합니다. 모드는 선택사항이며 다음 중 하나:

    • 운전을 위한 d (기본값)
    • 자전거로 b
    • 오토바이용 l
    • 도보 w
  • avoid는 경로에서 피해야 할 지형지물을 설정합니다. 회피는 선택사항이며 다음 중 하나 이상으로 설정할 수 있습니다.

    • 유료도로 t
    • 고속도로의 경우 h
    • 페리: f

예시

아래 Intent에서 다음 지역에 있는 Taronga 동물원의 세부 경로 안내 내비게이션을 요청합니다. 호주 시드니:

자바

Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

val gmmIntentUri =
  Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

타롱가 동물원 가는 길

통행료를 지불하거나 페리를 이용하고 싶지 않다면 그 것을 피하려고 합니다.

자바

Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

val gmmIntentUri =
  Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

약간 운동을 하고 싶다면 대신 자전거 경로를 요청할 수 있습니다.

자바

Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&mode=b");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

val gmmIntentUri =
  Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&mode=b")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

전동 오토바이를 선호하는 경우 경로를 요청할 수 있습니다. 자동차가 이용할 수 없는 좁은 도로와 트레일 포함 아래 intent가 반환됩니다. 인도에 있는 한 경로였죠.

자바

Uri gmmIntentUri = Uri.parse("google.navigation:q=Connaught+Place,+New+Delhi,Delhi&mode=l");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

val gmmIntentUri =
  Uri.parse("google.navigation:q=Connaught+Place,+New+Delhi,Delhi&mode=l")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

스트리트 뷰 파노라마 표시

google.streetview 인텐트를 사용하여 Google 스트리트 뷰를 실행합니다. Google 스트리트 뷰 지정된 위치부터 탁 트인 전망을 감상할 수 있는 적용 범위. 사용자 제공 Photo Sphere스트리트 뷰 특별 컬렉션 도 사용할 수 있습니다.

google.streetview:cbll=latitude,longitude&cbp=0,bearing,0,zoom,tilt
google.streetview:panoid=id&cbp=0,bearing,0,zoom,tilt

매개변수

모든 google.streetview URI에는 cbll 또는 panoid가 포함되어야 합니다. 매개변수 값으로 사용됩니다.

  • cbll는 위도와 경도를 쉼표로 구분된 값으로 허용합니다. (46.414382,10.013988). 앱에서 촬영한 파노라마 사진을 찾을 수 있습니다. 스트리트 뷰 이미지는 새로고침되며 사진이 약간 다른 위치에서 촬영될 수 있습니다 매번 위치가 다른 시간대로 맞춰지고 이미지가 업데이트되면 파노라마가 표시됩니다.

  • panoid는 특정 파노라마 ID입니다. Google 지도는 파노라마 ID를 panoidcbll가 모두 지정되었습니다. 파노라마 ID는 Android 앱 StreetViewPanoramaLocation 객체

  • cbp는 이미지의 초기 방향을 조정하는 선택적 매개변수입니다. 있습니다. cbp 매개변수는 쉼표로 구분된 값 5개를 사용합니다. 모두 선택사항입니다. 가장 중요한 값은 두 번째, 네 번째, 다섯 번째입니다. 는 각각 방위, 확대/축소, 기울기를 설정합니다. 첫 번째와 세 번째 값은 지원되지 않으며 0로 설정해야 합니다.

    • bearing: 카메라의 나침반 방향을 시계 방향 각도로 나타냅니다. 북쪽에 위치해 있습니다. 정북쪽은 0, 동쪽은 90, 남쪽은 180, 서쪽은 270입니다. 값 베어링에 전달됩니다. 0°, 360°, 720° 모두 같은 방향을 가리키기도 합니다. 방위는 5의 2초로 정의됨 쉼표로 구분되어 있습니다.
    • zoom: 카메라의 확대/축소 수준을 설정합니다. 기본 확대/축소 수준이 설정됩니다. 를 0으로 설정합니다. 확대/축소를 1로 설정하면 배율이 두 배가 됩니다. 확대/축소가 고정되어 있습니다. 0에서 현재 파노라마의 최대 줌레벨입니다. 즉, 이 범위를 벗어나는 값은 가장 가까운 극한의 값을 나타냅니다. 예를 들어 -1의 값은 0으로 설정됩니다. 확대/축소는 5개의 쉼표로 구분된 값 중 네 번째 값입니다.
    • tilt: 카메라의 각도(위 또는 아래)를 지정합니다. 범위는 -90입니다. 90도는 똑바로 아래를 향하고 0은 지평선을 향하게 하고 -90도는 위쪽을 바라보게 됩니다.

예시

아래는 스트리트 뷰 인텐트를 사용하는 몇 가지 예시입니다.

자바

// Displays an image of the Swiss Alps
Uri gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

// Uses a PanoID to show an image from Maroubra beach in Sydney, Australia
Uri gmmIntentUri = Uri.parse("google.streetview:panoid=Iaa2JyfIggYAAAQfCZU9KQ");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

// Opens Street View between two Pyramids in Giza. The values passed to the
// cbp parameter will angle the camera slightly up, and towards the east.
Uri gmmIntentUri = Uri.parse("google.streetview:cbll=29.9774614,31.1329645&cbp=0,30,0,0,-15");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

// Displays an image of the Swiss Alps
val gmmIntentUri =
  Uri.parse("google.streetview:cbll=46.414382,10.013988")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

// Uses a PanoID to show an image from Maroubra beach in Sydney, Australia
val gmmIntentUri =
  Uri.parse("google.streetview:panoid=Iaa2JyfIggYAAAQfCZU9KQ")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

// Opens Street View between two Pyramids in Giza. The values passed to the
// cbp parameter will angle the camera slightly up, and towards the east.
val gmmIntentUri =
  Uri.parse("google.streetview:cbll=29.9774614,31.1329645&cbp=0,30,0,0,-15")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

스트리트 뷰의 피라미드