Una vez que el usuario presiona el botón en mi aplicación, me gustaría abrir la aplicación estándar de Google Map y mostrar una ubicación particular. ¿Cómo puedo hacerlo? (sin usar com.google.android.maps.MapView
)
android
google-maps
LA_
fuente
fuente
lat: 59.915494, lng: 30.409456
, vuelve a la posición incorrecta.String.format("geo:%f,%f", latitude, longitude)
devuelve la cadena con comas:geo:59,915494,30,409456
.También puede simplemente usar http://maps.google.com/maps como su URI
o puede asegurarse de que solo se use la aplicación Google Maps, esto evita que aparezca el filtro de intención (diálogo), usando
al igual que:
o puede agregar etiquetas a las ubicaciones agregando una cadena dentro de paréntesis después de cada conjunto de coordenadas de la siguiente manera:
Para usar la ubicación actual de los usuarios como punto de partida (desafortunadamente no he encontrado una manera de etiquetar la ubicación actual), simplemente deje el
saddr
parámetro de la siguiente manera:Para completar, si el usuario no tiene la aplicación de mapas instalada, entonces será una buena idea atrapar la ActivityNotFoundException, como dice @TonyQ, entonces podemos comenzar la actividad nuevamente sin la restricción de la aplicación de mapas, podemos estar bastante seguros que nunca llegaremos al Toast al final ya que un navegador de Internet es una aplicación válida para lanzar este esquema de URL también.
EDITAR:
Para obtener instrucciones, ahora se admite una intención de navegación con google.navigation
fuente
Usar el formato de cadena ayudará, pero debes tener cuidado con la configuración regional. En alemania float se separará con una coma en lugar de un punto.
Usando
String.format("geo:%f,%f",5.1,2.1);
el idioma local, el resultado será,"geo:5.1,2.1"
pero con el idioma alemán obtendrá"geo:5,1,2,1"
Debe usar la configuración regional en inglés para evitar este comportamiento.
Para establecer una etiqueta en el punto geográfico, puede ampliar su uri geográfica utilizando:
!!! pero tenga cuidado con esto, el geo-uri todavía está en desarrollo http://tools.ietf.org/html/draft-mayrhofer-geo-uri-00
fuente
Mira esta página de google:
http://developer.android.com/guide/appendix/g-app-intents.html
Puede usar un URI del formulario
para abrir el visor de mapas de Google y apuntarlo a una ubicación.
fuente
A veces, si no hay ninguna aplicación asociada con geo: protocal, puede usar try-catch para obtener ActivityNotFoundException para manejarlo.
Ocurre cuando usa algún emulador como androVM que no está instalado de forma predeterminada en google map.
fuente
También puede usar el fragmento de código a continuación, de esta manera se verifica la existencia de google maps antes de que se inicie la intención.
Referencia: https://developers.google.com/maps/documentation/android-api/intents
fuente
Para ir a la ubicación CON PIN, use:
sin pin, use esto en uri:
fuente
Tengo una aplicación de muestra donde preparo la intención y simplemente paso CITY_NAME en la intención a la actividad del marcador de mapas que eventualmente calcula la longitud y latitud por Geocoder usando CITY_NAME.
A continuación se muestra el fragmento de código de inicio de la actividad del marcador de mapas y la actividad completa de MapsMarker.
Los enlaces caducan, así que he pegado el código completo arriba, pero en caso de que desee ver el código completo, está disponible en: https://github.com/gosaliajigar/CSC519/tree/master/CSC519_HW4_89753
fuente
Esto está escrito en Kotlin, abrirá la aplicación de mapas si se encuentra y colocará el punto y le permitirá comenzar el viaje:
Reemplace
requireActivity()
con suContext
.fuente