Google cambió su API de mapas para Android e introdujo API V2. Los códigos anteriores para la ruta de dibujo no funcionan con API V2.
He logrado trazar un camino con API V2. Había buscado mucho la solución pero no encontré ninguna respuesta. Entonces les estoy compartiendo su respuesta.
google-maps
path
google-maps-markers
routes
google-maps-android-api-2
Zeeshan Mirza
fuente
fuente
Respuestas:
En primer lugar obtendremos puntos de origen y destino entre los que tendremos que trazar ruta. Luego pasaremos estos atributos a la siguiente función.
Esta función creará la URL que enviaremos para obtener la respuesta de la API de dirección. Luego analizaremos esa respuesta. La clase del analizador es
Este analizador nos devolverá una cadena. Lo llamaremos así.
Ahora enviaremos esta cadena a nuestra función drawpath. La función drawpath es
El código anterior dibujará la ruta en mMap. El código de decodePoly es
Como la llamada de dirección puede llevar tiempo, haremos todo esto en la tarea Asincrónica. Mi tarea asincrónica fue
Espero que te ayude.
fuente
PolylineOptions options = new PolylineOptions().width(5).color(Color.BLUE).geodesic(true); for (int z = 0; z < list.size(); z++) { LatLng point = list.get(z); options.add(point); } line = myMap.addPolyline(options);
Requests to this API must be over SSL
, cambiehttp
ahttps
key
parámetro en lamakeURL
función de lo contrario obtuveThis IP, site or mobile application is not authorized to use this API key
. Además, cambie la URL a enhttps
lugar dehttp
como mencionó AlvaroSantisteban.No sé si debería poner esto como respuesta o no ...
Usé la solución de @ Zeeshan0026 para dibujar el camino ... y el problema era que si dibujo el camino una vez, y luego intento dibujar el camino una vez más, se muestran dos caminos y esto continúa ... caminos que se muestran incluso cuando los marcadores estaban eliminado ... mientras, idealmente, las rutas antiguas 'no deberían estar allí una vez que se dibuja una nueva ruta / se eliminan los marcadores ...
pasando por alguna otra pregunta sobre SO, tuve la siguiente solución
Agrego la siguiente función en la clase de Zeeshan
en mi actividad de mapa, antes de dibujar la ruta, llamé a esta función ... el uso de ejemplo según mi aplicación es
puede usar
rt.clearRoute();
según sus requisitos .. Con la esperanza de que le ahorre unos minutos a otra persona y ayude a algún principiante a resolver este problema ..Código de clase completo
ver en github
Editar: aquí es parte del código de mainactivity ..
Editar 2 según los comentarios
uso:
fuente
en el siguiente código midpointsList es una ArrayList de waypoints
Luego copie y pegue esta URL en su navegador para verificar Y el siguiente código es para analizar la URL
Y luego pasa el resultado al método drawPath
La función decode poly es decodificar los puntos (lat y long) proporcionados por la API de direcciones en forma codificada
fuente
Pruebe la siguiente solución para dibujar una ruta con animación y también obtenga el tiempo y la distancia entre dos puntos.
DirectionHelper.java
GetPathFromLocation.java
DirectionPointListener
Ahora dibuje la ruta usando el siguiente código en su actividad
Salida
¡Espero que esto pueda ayudarte!
Gracias.
fuente