¿Hay alguna manera de mostrar las instrucciones de la ruta en Google Map API v2?

Estaba buscando una respuesta usando Google y aquí, y los únicos mensajes relevantes que he encontrado son:

Google Maps Android V2 y API de dirección

Obtener indicaciones para llegar con la API de Google Maps v2

Pero no hay respuesta allí. Así que ya lo he mencionado, pero lo diré de nuevo. Estoy buscando una solución para Google Map API v2 usando FragmentActivity y un SupportMagFragment y LatLng objetos y no usando MapView, MapActivtiy y GeoPoint.

Además no tengo el objeto Overlay para usar así que no puedo pintar la dirección en el mapa, ¿hay una alternativa para eso?

Entonces, ¿hay una manera de hacer eso?

Gracias por adelantado.

Pruebe esta solución aquí
Usted puede conseguir conducir o caminar dirección en V2

La superposición es realmente algo que olvidar.

Las polilíneas se pueden dibujar fácilmente

https://developers.google.com/maps/documentation/android/lines#add_a_polyline

Simplemente haga un bucle a través de sus puntos después de analizar la respuesta de JSON:

PolylineOptions rectOptions = new PolylineOptions() .add(new LatLng(37.35, -122.0)) .add(new LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude .add(new LatLng(37.45, -122.2)) // Same latitude, and 30km to the west .add(new LatLng(37.35, -122.2)) // Same longitude, and 16km to the south .add(new LatLng(37.35, -122.0)); // Closes the polyline. // Set the rectangle's color to red rectOptions.color(Color.RED); // Get back the mutable Polyline Polyline polyline = myMap.addPolyline(rectOptions); 

Su título de la pregunta es mucho más general que sus requisitos, así que contestaré esto en una manera que pienso beneficiarán a ésos que ven esta pregunta y esperanzadamente satisfacen sus requisitos en quizás una diversa manera.

Si usted no está mostrando direcciones en el contexto de un mapa que ya es un fragmento cargado y algo que se ha hecho para mostrar direcciones sobre el mapa (que es probablemente similar a lo que está haciendo el OP), es más fácil y creo estándar para hacer esto Con un Intent .

Esto lanza una actividad de ruta del mapa (a través de una aplicación separada – donde la aplicación lanzada depende de las aplicaciones compatibles del usuario, que por defecto es Google Maps) que dibuja direcciones desde la dirección de origen ( String originAddress ) a la dirección de destino ( String destinationAddress ) via Carreteras

 // Build the URI query string. String uriPath = "https://www.google.com/maps/dir/"; // Format parameters according to documentation at: // https://developers.google.com/maps/documentation/directions/intro String uriParams = "?api=1" + "&origin=" + originAddress.replace(" ", "+") .replace(",", "") + "&destination=" + destinationAddress.replace(" ", "+") .replace(",", "") + "&travelmode=driving"; Uri queryURI = Uri.parse(uriPath + uriParams); // Open the map. Intent intent = new Intent(Intent.ACTION_VIEW, queryURI); startActivity(activity, intent, null); 

(Cuando la activity es simplemente la Activity actualmente activa – obtenida por cualquier medio que sea apropiado en el contexto de programación actual).

El siguiente código obtiene una dirección String de un objeto LatLng (que debe procesarse para la consulta URI String como la anterior):

 /** * Retrieves an address `String` from a `LatLng` object. */ private void getAddressFromLocation( final StringBuilder address, final LatLng latlng) { // Create the URI query String. String uriPath = "https://maps.googleapis.com/maps/api/geocode/json"; String uriParams = "?latlng=" + String.format("%f,%f", latlng.latitude, latlng.longitude) + "&key=" + GOOGLE_MAPS_WEB_API_KEY; String uriString = uriPath + uriParams; // Issue the query using the Volley library for networking. RequestFuture<JSONObject> future = RequestFuture.newFuture(); JSONObject response = null; // Required for JsonObjectRequest, but not important here. Map<String, String> jsonParams = new HashMap<String, String>(); JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, uriString, new JSONObject(jsonParams), new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { try { if (response != null) { String resultString = response.getJSONArray("results") .getJSONObject(0) .getString("formatted_address"); // Assumes `address` was empty. address.append(resultString); } // end of if // No response was received. } catch (JSONException e) { // Most likely, an assumption about the JSON // structure was invalid. e.printStackTrace(); } } // end of `onResponse()` }, // end of `new Response.Listener<JSONObject>()` new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e(LOG_TAG, "Error occurred ", error); } }); // Add the request to the request queue. // `VolleyRequestQueue` is a singleton containing // an instance of a Volley `RequestQueue`. VolleyRequestQueue.getInstance(activity) .addToRequestQueue(request); } 

Esta petición es asíncrona, pero se puede hacer sincrónica . Usted necesitará llamar a toString() en el parámetro real pasado a la address para obtener originAddress .

Q: Estaba buscando una respuesta usando Google y aquí, y los únicos mensajes relevantes que he encontrado son: Google Maps Android V2 y la dirección API Google mapa API v2 – obtener instrucciones para llegar

Respuesta: Su dicho, "pero no hay respuesta allí." No es absolutamente correcto. En este sitio, usted puede encontrar sólo algunas pistas sobre eso. Creo que no obtendrá el código perfecto y los KNOW-HOWs de implementación concretos aquí. De hecho, muchos desarrolladores quieren que la aplicación muestre el enrutamiento o las direcciones en Google Maps. Pero creo que no hay una solución para obtener direcciones sólo con la pura API de Google Maps v2.

P: Así que ya lo he mencionado pero lo repetiré. Estoy buscando una solución para Google Map API v2 usando FragmentActivity y un SupportMagFragment y LatLng objetos y no usando MapView, MapActivtiy y GeoPoint.

Respuesta: Aquí hay algunos buenos ejemplos de tutoriales (haga clic aquí) . Puedes encontrar lo que quieres.

P: Además, no tengo el objeto Superposición para usar, así que no puedo pintar la dirección en el mapa, ¿hay una alternativa para eso? Entonces, ¿hay una manera de hacer eso?

Respuesta: En la API de Google Maps v2, la molesta superposición y así sucesivamente no son más necesarias. Para esto, usted puede encontrar la respuesta en mi sitio enlazado arriba.

  • MapView v2 manteniendo el contexto alrededor
  • La aplicación se bloquea al utilizar Google Maps v2 en la mayoría de los dispositivos
  • Cómo buscar en Google Map Api V2 Android?
  • Android Google Maps v2, MAP_TYPE_NONE y cuadrados negros
  • ¿Cómo mostrar el popup en la superposición de tapping en android?
  • Escuchar nivel de zoom en google maps v2 en android
  • NullPointerException cuando se utiliza RelativeLayout como InfoWindow personalizado
  • "Los servicios de Google Play se están actualizando" en Google Maps API
  • Inicializar MapFragment mediante programación con Google Maps API v2
  • Android - IllegalStateException: mapa tiene tamaño cero
  • ¿Cómo recuperar la instantánea del mapa de la actividad del selector de lugares?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.