Android: abre la intención del mapa con direcciones con dos puntos

¿Cómo abrir la intención del mapa con las direcciones?

Se acerca de

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(String.format(Locale.US, "geo:%.8f,%.8f", latitude, longitude))); startActivity(Intent.createChooser(intent, "Select an application")); 

Este código funciona bien para un punto. Pero quiero mostrar diálogo con TODAS las aplicaciones de mapas, y abrir las direcciones del punto A al punto B con cualquier aplicación (Google Map, Citymapper, navegador web, etc).

Has probado esto

 String uri = "http://maps.google.com/maps?f=d&hl=en&saddr="+latitude1+","+longitude1+"&daddr="+latitude2+","+longitude2; Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri)); startActivity(Intent.createChooser(intent, "Select an application")); 

Desafortunadamente, no se puede usar un URI universal para representar dos puntos geográficos.

Puede especificar un único punto y pasarlo al selector como:

 String uri = String.format(Locale.ENGLISH, "geo:%f,%f", lat, lng); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); context.startActivity(Intent.createChooser(intent, "Select your maps app")); 

Sin embargo, para obtener direcciones, por desgracia, tendrá que utilizar:

URL única:

La mejor opción en mi opinión. Debe utilizar un único proveedor de mapas y utilizar su URL como URI. De esta manera, las instrucciones que obtenga son consistentes, compatibles con varios dispositivos y lo más importante es fácil de usar / obtener.

URL viejas y sencillas:

Puede utilizar diferentes URL para diferentes proveedores de mapas.

Por ejemplo, Citymapper :

 https://citymapper.com/london/superrouter?start=LAT_START,LNG_START&end=LAT_END,LNG_END 

Sin embargo otros no son tan amigables, por ejemplo Yandex :

 http://maps.yandex.com/?rtext=59.326460%2C12.699889~57.386826%2C12.348327&sll=12.941588%2C56.517713&sspn=34.716797%2C12.029728&rtm=atm&source=route&ll=12.941588%2C56.517713&spn=34.716797%2C12.029728&z=6&l=map 

Tal vez usted puede decodificar esa url usted mismo 🙂

API de mapas integrados

Integre, por ejemplo, Google Maps API en su aplicación y muestre las instrucciones desde allí. Necesitará obtener direcciones en el formato de los puntos lat-lng de la API de direcciones en un formato JSON. Entonces usarías esos puntos para dibujar una polilínea.

prueba esto

  Uri uri = Uri.parse("geo:" + latitude1 + "," + longitude1 + "?q=" + Uri.encode(latitude2 + "," + longitude2 + "(" +Label+ ")")); Intent intent = new Intent(android.content.Intent.ACTION_VIEW, uri); startActivity(intent); 

Si crea una URL en el formato

 http://maps.google.com/maps?saddr=[latitude1], [longitude1]&daddr=[latitude2], [longitude2] 

Donde [latitud1] y [longitud1] son ​​la latitud y longitud para el punto de inicio, e igualmente [latitud2] y [longitud2] son ​​el punto final, y lo establece como una cadena

 Intent navigationIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(navigationUrlOfMap)); intent.setClassName("com.Google.Android.apps.maps", "com.Google.Android.maps.MapsActivity"); startActivity(intent); 

O también puedes usar esto

 startActivity(Intent.createChooser(intent, "Select an application")); 

Si desea configurar la aplicación del selector

  • Utilice google map en cualquier dispositivo. (Sin jugar de google)
  • Geo: intención con un placeid
  • El proyecto de la biblioteca de Android no se registra en Google Map
  • ¿Una clave API de Google Maps caduca después de un tiempo determinado?
  • Distancia entre geopuntos
  • Cómo agregar fragmento de mapa mediante programación
  • Cómo obtener límite de velocidad mediante google maps api?
  • Dibujar línea punteada en google maps v2 en lugar de sólido
  • Google mapa cuestión incluso todos los ajustes son correctos según google doc
  • Android: Buscar lugares cercanos con la API de Google Places
  • Cómo mover camra a un marcador específico en google maps v2 en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.