Solución:
Cambié el decodePoly que estaba usando para este que encontré después de una larga búsqueda en Google, y ahora la ruta está dibujada correctamente.
http://wptrafficanalyzer.in/blog/route-between-two-locations-with-waypoints-in-google-map-android-api-v2/
Cambiando
LatLng p = new LatLng((int) (((double) lat /1E5)* 1E6), (int) (((double) lng/1E5 * 1E6)));
por
LatLng p = new LatLng((((double) lat / 1E5)),(((double) lng / 1E5)));
Y ahora funciona.
Para aquellos que necesitan esto ahora, hay una biblioteca de código abierto con muchas cosas útiles sobre la API de Android de Google Maps, incluida la decodificación y codificación de polilíneas.
Compruébalo en Android Maps Utils y Android Maps Util Github. Para decodificar y codificar, utilice:
PolyUtil.decode(String encodedPath);
PolyUtil.encode(List<LatLng> path);
Lo mismo en Javascript
function decodePolyline(encoded) {
if (!encoded) {
return [];
}
var poly = [];
var index = 0, len = encoded.length;
var lat = 0, lng = 0;
while (index < len) {
var b, shift = 0, result = 0;
do {
b = encoded.charCodeAt(index++) - 63;
result = result | ((b & 0x1f) << shift);
shift += 5;
} while (b >= 0x20);
var dlat = (result & 1) != 0 ? ~(result >> 1) : (result >> 1);
lat += dlat;
shift = 0;
result = 0;
do {
b = encoded.charCodeAt(index++) - 63;
result = result | ((b & 0x1f) << shift);
shift += 5;
} while (b >= 0x20);
var dlng = (result & 1) != 0 ? ~(result >> 1) : (result >> 1);
lng += dlng;
var p = {
latitude: lat / 1e5,
longitude: lng / 1e5,
};
poly.push(p);
}
return poly;
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)