El App de Google Maps para Android expone varios intents que puedes usar para iniciar Google Maps en pantalla. los modos de búsqueda, navegación o Street View. Si deseas incorpora un mapa en tu app, consulta la API de Google Maps para Android Guía de introducción.
Descripción general
Los intents te permiten iniciar una actividad en otra app mediante la descripción de una acción simple.
que deseas realizar (por ejemplo, "mostrar un mapa" o "mostrar instrucciones sobre cómo llegar hasta
aeropuerto") en una
Intent
. El
App de Google Maps para Android
admite varios intents diferentes, lo que te permite iniciar la app de Google Maps
y realizar una de estas cuatro acciones:
- Muestra un mapa en una ubicación y con un nivel de zoom especificados.
- Busca ubicaciones o lugares y muéstralos en un mapa.
- Solicita instrucciones sobre cómo llegar de una ubicación a otra. Se pueden mostrar instrucciones sobre cómo llegar para tres medios de transporte: en automóvil, a pie y en bicicleta.
- Muestra imágenes panorámicas en Google Street View.
En esta página, se describen los intents que puedes usar con la app de Google Maps para Android Para obtener más información sobre los intents Filtros o intents comunes a Android en la plataforma, consulta la documentación para desarrolladores de Android.
Solicitudes de intents
Para poder iniciar Google Maps con un intent, primero debes crear un
Intent
y especifica su acción, URI y paquete.
- Acción: Todos los intents de Google Maps se denominan una acción de vista.
ACTION_VIEW
- URI: Los intents de Google Maps usan URL codificadas que especifican junto con algunos datos para realizar la acción.
- Paquete: Llamar a
setPackage("com.google.android.apps.maps")
asegurarte de que la app de Google Maps para Android maneje el intent. Si el botón no está configurado, el sistema determinará qué aplicaciones puedenIntent
Si hay varias apps disponibles, es posible que se le pregunte al usuario cuál de ellas que les gustaría usar.
Después de crear el Intent
, puedes solicitar que el sistema inicie el elemento
aplicación de varias maneras. Un método común es pasar Intent
al
startActivity()
. El sistema iniciará la app necesaria, en este caso, Google
Maps y comienza el
Activity
correspondiente
Java
// 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)
Si el sistema no puede identificar una aplicación que pueda responder al intent, tu app puede fallar. Por este motivo, primero debes verificar que un receptor La aplicación se instala antes de que presentes uno de estos intents a un usuario.
Para verificar que una app esté disponible para recibir el intent, llama a
resolveActivity()
en tu
Intent
. Si el resultado no es nulo, hay al menos una app que puede manejar la
intent y es seguro llamar
startActivity()
Si el resultado es null
, no debes usar el intent y, si es posible,
debe inhabilitar la función que invoca el intent.
Java
if (mapIntent.resolveActivity(getPackageManager()) != null) { ... }
Kotlin
mapIntent.resolveActivity(packageManager)?.let { ... }
Por ejemplo, para mostrar un mapa de San Francisco puedes usar el siguiente código:
Java
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) }
Cadenas de consulta codificadas para URL
Todas las cadenas pasadas a las intenciones de Google Maps deben tener codificación de URI. Por ejemplo:
la cadena "1.a y Pike, Seattle" debe convertirse en 1st%20%26%20Pike%2C%20Seattle
.
Los espacios de la cadena pueden codificarse con %20 o reemplazarse con el signo más (+).
Puedes usar el método android.net.Uri
parse()
para codificar tus cadenas.
Por ejemplo:
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"))
Muestra de un mapa
Usa el intent geo:
para mostrar un mapa en una ubicación y con un nivel de zoom especificados.
geo:latitude,longitude?z=zoom
Parámetros
latitude
ylongitude
establecen el punto central del mapa.- De manera opcional,
z
establece el nivel de zoom inicial del mapa. Rango de valores aceptados de 0 (todo el mundo) a 21 (edificios individuales). El límite superior puede varían en función de los datos del mapa disponibles para la ubicación seleccionada.
Ejemplos
Java
// 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)
Buscando una ubicación
Usa esta intención para mostrar solicitudes de búsqueda dentro de un viewport especificado. Cuando búsqueda tiene un solo resultado, puedes usar esta intent para mostrar un marcador a un lugar o una dirección determinados, como un punto de referencia, una empresa, un accidente geográfico, o una ciudad.
geo:latitude,longitude?q=query geo:0,0?q=my+street+address geo:0,0?q=latitude,longitude(label)
Parámetros
Además de los parámetros que se usan para mostrar un mapa, la Búsqueda admite el los siguientes parámetros:
q
define los lugares que se deben destacar en el mapa. El parámetroq
es son obligatorias para todas las solicitudes de búsqueda. Acepta una ubicación como un lugar nombre o dirección. La cadena debe estar codificada como URL, entonces una dirección como "City Hall, New York, NY" debe convertirse en City+Hall,Nueva+York,NY.label
te permite establecer una etiqueta personalizada en un lugar identificado en el mapa. Ellabel
debe especificarse como una cadena.
Búsqueda categórica
Si pasas un término de búsqueda general, Google Maps intentará encontrar una ubicación cerca de la latitud y longitud que especificó y que coinciden con sus criterios. Si no se indica ninguna ubicación especificada, Google Maps intentará encontrar fichas cercanas. Por ejemplo:
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)
Puedes personalizar aún más los resultados de búsqueda especificando un parámetro de zoom junto por la cadena de consulta. En el siguiente ejemplo, con un zoom de 10, se intentará para encontrar restaurantes a nivel de ciudad en lugar de cerca.
Java
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)
Búsqueda de ubicación
La búsqueda de una dirección específica hará que se muestre una marca en dicha ubicación.
Java
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)
En el ejemplo anterior,se configuran las coordenadas de latitud y longitud 0
y 0
, pero se pasa una dirección como consulta
una cadena vacía. Cuando se busca una ubicación muy específica, la latitud y la longitud
no son obligatorios. Sin embargo, si no sabes la dirección exacta, puedes
intenten personalizar los resultados de la búsqueda especificando una coordenada. Para
ejemplo, realizar una búsqueda de dirección para "Calle principal" devolverá demasiados
resultados.
Java
// 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")
Agregar un valor de latitud y longitud al URI de la intent personalizará los resultados hacia un valor específico área:
Java
// 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)
Cuando sepas que tu búsqueda devolverá un solo valor, quizás desees pasar un
etiqueta opcional. Las etiquetas deben especificarse como un elemento String, y aparecerán debajo del
marcador de mapa. Ten en cuenta que las etiquetas solo están disponibles cuando se especifica q
como
coordenada de latitud y longitud.
Java
// 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)
Como alternativa a una dirección o a una latitud/longitud, puedes mostrar un pin en una ubicación conocida mediante una plus code.
Java
// 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
Iniciar la navegación paso a paso
Usar esta intención para iniciar la navegación de Google Maps con instrucciones paso a paso a la dirección o coordenada especificada. Las instrucciones siempre se proporcionan desde la la ubicación actual del usuario.
google.navigation:q=a+street+address google.navigation:q=latitude,longitude
Parámetros
q
: Establece el punto de destino para las búsquedas de navegación. Este valor puede ser coordenadas de latitud y longitud, o una dirección con formato de consulta. Si se trata de una consulta cadena que devuelve más de un resultado, el primer resultado será seleccionado.mode
establece el medio de transporte. El modo es opcional y se puede configurar para una de las siguientes opciones:d
para conducir (predeterminado)b
en bicicletal
para vehículo motorizado de dos ruedasw
a pie
avoid
establece los componentes que la ruta debe intentar evitar. Evitar es opcional y se pueden establecer en una o más de las siguientes opciones:t
para peajesh
para autopistasf
para ferris
Ejemplos
El siguiente Intent
solicitará navegación paso a paso hasta el Taronga Zoo, en
Sídney, Australia:
Java
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)
Si prefieres no pagar peajes ni viajar en transbordador, puedes solicitar rutas que intenta evitar esas cosas.
Java
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)
Si prefieres hacer un poco de ejercicio, puedes solicitar instrucciones sobre cómo llegar en bicicleta.
Java
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)
Si prefieres usar un vehículo motorizado de dos ruedas, puedes solicitar que las instrucciones sobre cómo llegar
incluyen rutas estrechas y senderos que no están disponibles para los automóviles. Se devuelven las siguientes intent
una ruta en India.
Java
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)
Cómo mostrar una panorámica de Street View
Usa el intent google.streetview
para iniciar Google Street View. Google Street View
proporciona vistas panorámicas de ubicaciones designadas a lo largo de su
área de cobertura.
Fotos esféricas enviadas por los usuarios,
y
Colecciones especiales de Street View
también están disponibles.
google.streetview:cbll=latitude,longitude&cbp=0,bearing,0,zoom,tilt google.streetview:panoid=id&cbp=0,bearing,0,zoom,tilt
Parámetros
Todos los URIs de google.streetview
deben incluir un cbll
o un panoid
parámetro.
cbll
acepta una latitud y una longitud como valores separados por comas (46.414382,10.013988
) La aplicación mostrará la panorámica que se tomó. más cerca de esa ubicación. Debido a que las imágenes de Street View se muestran periódicamente actualizado y es posible que las fotografías se tomen desde posiciones ligeramente diferentes. es posible que tu ubicación se ajuste a una panorámica cuando se actualizan las imágenes.panoid
es un ID de panorámica específico. Google Maps utilizará el ID de panorámica si se especificanpanoid
ycbll
. Los IDs de panorámica están disponibles para un app para Android desde ObjetoStreetViewPanoramaLocation
.cbp
es un parámetro opcional que ajusta la orientación inicial de la cámara. El parámetrocbp
toma 5 valores separados por comas, todos de los cuales son opcionales. Los valores más significativos son el segundo, el cuarto y el quinto que establecen el rumbo, el zoom y la inclinación, respectivamente. La primera y la tercera no se admiten y deben establecerse en0
.bearing
: Indica la orientación de la cámara según la brújula en grados en el sentido de las manecillas del reloj. del norte. El norte geográfico es el grado 0, el este el 90, el sur el 180 y el oeste el 270. Valores que pasa al rumbo se unirán; es decir, 0°, 360° y 720° apuntan en la misma dirección. El rumbo se define como el segundo de cinco valores separados por comas.zoom
: Establece el nivel de zoom de la cámara. Se estableció el nivel de zoom predeterminado en 0. Un valor de zoom de 1 duplicaría la ampliación. El zoom está fijo entre 0 y el nivel de zoom máximo para la panorámica actual. Esto significa que cualquier valor que quede fuera de este rango se fijará extremo más cercano que se encuentre dentro del rango. Por ejemplo, un valor de -1 se establecerá en 0. El zoom es el cuarto de los valores separados por comas.tilt
: Especifica el ángulo, ascendente o descendente, de la cámara. El rango es -90. de 0 a 90, donde 90 apunta directamente hacia abajo y 0 está centrado en el horizonte y -90 mirando hacia arriba.
Ejemplos
A continuación se proporcionan algunos ejemplos de uso de la intención de Street View.
Java
// 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)