Android Google maps-v2 polilínea anterior que no se elimina

2 minutos de lectura

Después de probar todas las respuestas anteriores en StackOverflow Estoy publicando esta respuesta.

Estoy mostrando la ubicación en vivo de un conductor y una ruta desde esa ubicación hasta un destino específico. Lo que quiero es eliminar la polilínea antigua pronto, la ubicación en vivo del controlador cambia, pero no está sucediendo y está aumentando el número de polilíneas.

Aquí está el código donde estoy eliminando la polilínea pero no funciona.

private void drawRouteOnMap(GoogleMap map, List<LatLng> positions) {
    PolylineOptions options = new PolylineOptions().width(12).color(Color.GREEN).geodesic(true);
    options.addAll(positions);

    if (polyline != null) {
        polyline.remove();
        Log.e("Old Poly", "Removed");
    }

    Log.e("Poly", "Added");
    polyline = mMap.addPolyline(options);
}

  • mMap.claro(); puede ayudar. Borrará todo el mapa.

    – MathankumarK

    23 de octubre de 2019 a las 11:12

  • Lo he intentado pero el problema es que también me está quitando los marcadores.

    – Yawad Malik

    23 de octubre de 2019 a las 11:16

  • use una llamada remove () en el objeto de polilínea.

    -Sagar Nayak

    23 oct 2019 a las 11:37

  • @SagarNayak mira el código de arriba, creo que lo he hecho

    – Yawad Malik

    23 oct 2019 a las 11:39

  • ¡oh! Lo he comprobado ahora y no se ha impreso. creo que la polilínea es nula tal vez?

    – Yawad Malik

    23 de octubre de 2019 a las 11:43

Prueba así.

// decleare it globally
List<Polyline> polylines = new ArrayList<Polyline>();

private void drawRouteOnMap(GoogleMap map, List<LatLng> positions) {
    PolylineOptions options = new PolylineOptions().width(12).color(Color.GREEN).geodesic(true);
    for(Polyline polyline: polylines){
      polyline.remove();
    }
    polylines.clear();

    for(LatLng latlng: positions){
        options.add(latlng);
        polylines.add(mMap.addPolyline(options);
    }
}

Lo he resuelto yo mismo. es porque eso function estaba siendo llamado de otro call debido a que polyline instancia fue nula. Lo solucione guardando polyline en SharedPrefrence y recuperando ese valor nuevamente en la próxima llamada.

¿Ha sido útil esta solución?