이 Android용 Google 지도 앱 Google 지도를 디스플레이에 표시하는 데 사용할 수 있는 여러 인텐트를 노출하고, 검색, 내비게이션 또는 스트리트 뷰 모드를 사용할 수 있습니다 원하는 경우 앱에 지도를 삽입하려면 Google Maps Android API를 참조하세요. 시작 가이드
개요
인텐트를 사용하면 간단한 작업을 설명하여 다른 앱에서 활동을 시작할 수 있음
'지도 표시' 또는 '목적지까지의 경로 표시'와 같이
공항')에
Intent
드림
객체를 지정합니다. 이
Android용 Google 지도 앱
여러 가지 인텐트를 지원하므로 Google 지도 앱을
그리고 다음 네 가지 작업 중 하나를 수행합니다.
- 특정 위치 및 확대/축소 수준에서 지도를 표시합니다.
- 위치나 장소를 검색하여 지도에 표시합니다.
- 한 위치에서 다른 위치로의 경로를 요청합니다. 경로를 반환할 수 있습니다. 세 가지 이동 수단(운전, 도보, 자전거)
- Google 스트리트 뷰에 파노라마 이미지를 표시합니다.
이 페이지에서는 Google 지도 앱과 함께 사용할 수 있는 인텐트를 Android 인텐트 및 인텐트 필터 또는 Android에 공통된 인텐트 플랫폼에 대한 자세한 내용은 Android 개발자 문서를 참조하세요.
인텐트 요청
인텐트가 포함된 Google 지도를 실행하려면 먼저
Intent
드림
객체에 대해 작업, URI 및 패키지를 지정합니다.
- 작업: 모든 Google 지도 인텐트가 뷰 작업으로 호출됩니다.
ACTION_VIEW
입니다. - URI: Google 지도 인텐트는 URL 인코딩된을 사용하여 원하는 작업을 수행하는 데 사용되는 일부 데이터와 함께 표시됩니다.
- 패키지:
setPackage("com.google.android.apps.maps")
에 전화를 걸면 Android용 Google 지도 앱이 인텐트를 처리하는지 확인합니다. 만약 패키지가 설정되지 않은 경우 시스템에서 어떤 앱을 처리할지 결정합니다.Intent
여러 앱을 사용할 수 있는 경우 사용자에게 어떤 앱을 사용할지 묻는 메시지가 표시될 수 있습니다. 선택할 수 있습니다
Intent
를 만든 후 시스템에서 관련
앱을 개발하는 데 사용할 수 있습니다. 일반적인 메서드는 Intent
를
startActivity()
메서드를 사용하여 축소하도록 요청합니다. 시스템에서 필요한 앱(이 경우 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
매개변수
latitude
및longitude
는 지도의 중심점을 설정합니다.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를panoid
와cbll
가 모두 지정되었습니다. 파노라마 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)