Saltar al contenido

Decodificación de polilíneas con la nueva API de Google Maps

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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *