android - simplificar - suavizar una polilinea en autocad
Cómo eliminar todas las polilíneas de un mapa (3)
Siguiendo
Cómo dibujar un camino entre dos marcadores
Tuve que agregar muchas polilíneas entre dos marcadores para hacer un camino.
Uno de los marcadores es arrastrable, digamos que la fuente es arrastrable.
Entonces, cuando el usuario comienza a arrastrar el marcador, se debe borrar la ruta dibujada previamente y se debe dibujar una nueva ruta entre el nuevo origen y el destino.
Puedo dibujar el nuevo camino, pero ¿cómo puedo borrar el camino anterior?
Así es como se dibuja el camino:
for (int z = 0; z < list.size() - 1; z++) {
LatLng src = list.get(z);
LatLng dest = list.get(z + 1);
Polyline line = map.addPolyline(new PolylineOptions()
.add(new LatLng(src.latitude, src.longitude),
new LatLng(dest.latitude, dest.longitude))
.width(2).color(Color.RED).geodesic(true));
}
Una solución que puedo obtener es
map.clear ();
Para borrar todas las polilíneas, marcadores, etc. y volver a agregar los marcadores, dibuja la ruta.
Pero tan pronto como comienzo a arrastrar, el marcador se borra, por lo tanto, no está visible en el mapa :(
Gracias
Mantenga un registro de Polyline mientras lo agrega al mapa:
Polyline polyline = this.mMap.addPolyline(new PolylineOptions().....);
Luego, cuando quieras eliminarlo:
polyline.remove();
Si tiene muchas polilíneas, simplemente agréguelas a una lista a medida que se colocan en el mapa:
List<Polyline> polylines = new ArrayList<Polyline>();
for(....)
{
polylines.add(this.mMap.addPolyline(new PolylineOptions()....));
}
Y cuando quieras eliminar:
for(Polyline line : polylines)
{
line.remove();
}
polylines.clear();
La clave es mantener una referencia a los objetos Polyline y llamar a .remove () en cada uno.
Sé que esta es una pregunta muy antigua, pero noté que esta es una necesidad muy común. Encontré otra manera y quería compartirla.
Aquí está la idea básica:
Polyline polylineFinal;
PolylineOptions polylineOptions;
loop {
polylineOptions.add( new LatLng( latitude, longitude ) );
}
polylineOptions.width(2);
polylineOptions.color(Color.RED);
polylineOptions.geodesic(true);
polylineFinal = map.addPolyline (polylineOptions);
El método "addPolyline" de Map devuelve una sola polilínea que contiene todos los puntos. Cuando necesito eliminar los puntos, llamo al método "eliminar" de polylineFinal.
polylineFinal.remove();
Usé este trabajo :)
private GoogleMap mMapView;
SupportMapFragment myMapFragment = (SupportMapFragment)getSupportFragmentManager()
.findFragmentById(R.id.mMapView3);
mMapView = myMapFragment.getMap();
PolylineOptions rectLine = new PolylineOptions()
.add(new LatLng(13.000000, 100.000000))
.add(new LatLng(13.010000, 100.000000));
mMapView.addPolyline(rectLine);