Mi aplicación necesita mostrar direcciones de Google Maps de A a B, pero no quiero poner Google Maps en mi aplicación; en cambio, quiero iniciarla usando un Intent. es posible? Si es así, ¿cómo?
java
android
google-maps
android-intent
Lars D
fuente
fuente
Respuestas:
Podrías usar algo como esto:
Para iniciar la navegación desde la ubicación actual, elimine el
saddr
parámetro y el valor.Puede usar una dirección real en lugar de latitud y longitud. Sin embargo, esto le dará al usuario un cuadro de diálogo para elegir entre abrirlo a través del navegador o Google Maps.
Esto activará Google Maps en modo de navegación directamente:
ACTUALIZAR
En mayo de 2017, Google lanzó la nueva API para URL universales multiplataforma de Google Maps:
https://developers.google.com/maps/documentation/urls/guide
También puedes usar Intents con la nueva API.
fuente
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
Esto está un poco fuera de tema porque solicitó "instrucciones", pero también puede usar el esquema Geo URI descrito en la Documentación de Android:
http://developer.android.com/guide/appendix/g-app-intents.html
El problema al usar "geo: latitud, longitud" es que Google Maps solo se centra en su punto, sin ningún pin o etiqueta.
Eso es bastante confuso, especialmente si necesita señalar un lugar preciso o pedir indicaciones.
Si utiliza el parámetro de consulta "geo: lat, lon? Q = name" para etiquetar su geopunto, utiliza la consulta para buscar y descartar los parámetros lat / lon.
Encontré una forma de centrar el mapa con lat / lon y mostrar un pin con una etiqueta personalizada, muy agradable de mostrar y útil al solicitar direcciones o cualquier otra acción:
NOTA (por @TheNail): no funciona en Maps v.7 (última versión en el momento de la redacción). Ignorará las coordenadas y buscará un objeto con el nombre entre paréntesis. Ver también Intención para Google Maps 7.0.0 con ubicación
fuente
geo:37.423156,-122.084917?q=37.423156,-122.084917 ...
?Aunque las respuestas actuales son geniales, ninguna de ellas hizo exactamente lo que estaba buscando, solo quería abrir la aplicación de mapas, agregar un nombre para cada ubicación de origen y destino, usar el esquema de geo URI no funcionaría para mí en absoluto y el enlace web de los mapas no tenía etiquetas, así que se me ocurrió esta solución, que es esencialmente una amalgama de las otras soluciones y comentarios hechos aquí, espero que sea útil para otros que ven esta pregunta.
Para usar su ubicación actual como punto de partida (desafortunadamente no he encontrado una manera de etiquetar la ubicación actual), use lo siguiente
Para completar, si el usuario no tiene la aplicación de mapas instalada, entonces será una buena idea detectar la ActivityNotFoundException, entonces podemos comenzar la actividad nuevamente sin la restricción de la aplicación de mapas, podemos estar bastante seguros de que nunca obtendremos Toast al final ya que un navegador de Internet es una aplicación válida para lanzar este esquema de URL también.
PD Las latitudes o longitudes utilizadas en mi ejemplo no son representativas de mi ubicación, cualquier semejanza con una ubicación verdadera es pura coincidencia, es decir, no soy de África: P
EDITAR:
Para obtener instrucciones, ahora se admite una intención de navegación con google.navigation
fuente
Uso de las últimas URL de Google Maps multiplataforma : incluso si falta la aplicación Google Maps , se abrirá en el navegador
Ejemplo https://www.google.com/maps/dir/?api=1&origin=81.23444,67.0000&destination=80.252059,13.060604
fuente
Abra Google Maps usando Intent con diferentes modos:
Podemos abrir la aplicación Google Maps con la intención:
Aquí, "modo = b" es para bicicleta.
Podemos configurar el modo de conducir, caminar y andar en bicicleta usando:
Puede encontrar más información sobre la intención con google maps aquí .
Nota: Si no hay una ruta para la bicicleta / automóvil / caminata, le mostrará "No puedo encontrar el camino"
Puedes consultar mi respuesta original aquí .
fuente
Bueno, puedes intentar abrir la aplicación integrada Android Maps utilizando el
Intent.setClassName
método.fuente
Para puntos de paso múltiples, también se puede utilizar el siguiente.
El primer conjunto de coordenadas es su ubicación inicial. Todos los siguientes son puntos de ruta, la ruta trazada pasa.
Simplemente siga agregando puntos de ruta concatenando "/ latitud, longitud" al final. Aparentemente, hay un límite de 23 puntos de referencia según los documentos de Google . No estoy seguro si eso también se aplica a Android.
fuente
Si está interesado en mostrar la latitud y la longitud desde la dirección actual, puede usar esto:
La siguiente consulta lo ayudará a realizar eso. Puede pasar la latitud y longitud de destino aquí:
Use arriba como:
O si desea mostrar por ubicación, use:
Más información aquí: Google Maps Intents para Android
fuente
mapIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Google
DirectionsView
con la ubicación de origen como ubicación actual y la ubicación de destino como una cadenaEn lo anterior
destinationCityName
hay una cadena variable modificable según sea necesario.fuente
prueba esto
fuente
Esto es lo que funcionó para mí:
fuente
si conoce el punto A, el punto B (y las características o pistas intermedias) puede usar un archivo KML junto con su intención.
para más información, ver esta respuesta SO
NOTA: este ejemplo utiliza un archivo de muestra que (a partir de mar13) todavía está en línea. si se ha desconectado, busque un archivo kml en línea y cambie su url
fuente
Primero necesita ahora que puede usar la intención implícita, la documentación de Android nos proporciona intenciones comunes muy detalladas para implementar la intención del mapa que necesita para crear una nueva intención con dos parámetros
Para la acción que podemos usar
Intent.ACTION_VIEW
y para Uri debemos compilarlo, a continuación adjunto un código de muestra para crear, construir e iniciar la actividad.fuente
<scheme>://<authority><absolute path>?<query>#<fragment>
no URI opacos<scheme>:<opaque part>#<fragment>
. El código anterior produce el siguiente URI: logeo:/0%2C0?Eiffel%20Tower
que hace que la aplicación Google Maps se bloquee. Incluso la documentación oficial usa URI sin procesar / opacos por esta misma razón. El código correcto sería:Uri.parse("geo:0,0?q=" + Uri.encode("Eiffel Tower"))
Una buena solución de Kotlin, utilizando la última respuesta multiplataforma mencionada por lakshman sai ...
Sin embargo, no es necesario Uri.toString y Uri.parse, esta respuesta es limpia y mínima:
fuente
Puede iniciar Direcciones de Google Maps a través de una intención en Android de esta manera
fuente