How to remove all the polylines from a map

AndroidGoogle MapsGoogle Maps-Android-Api-2

Android Problem Overview


Following

How to draw a path between two markers

I had to add lot of polylines between two markers, to make a path.

One of the markers is draggable, lets say source is draggable.

So, when user starts dragging the marker, the path previously drawn must be erased and a new path between new source and destination must be draw.

I am able to draw the new path, but how can i erase the previous path?

This is how the path is drawn:

	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));
	}

One solution i can get is

> map.clear();

To clear all the polylines, markers etc.. and add the markers again, then drawn the path.

But as soon as I start dragging, the marker is cleared, hence not visible on the map :(

Thank You

Android Solutions


Solution 1 - Android

Keep track of the Polyline as you add it to the map:

Polyline polyline = this.mMap.addPolyline(new PolylineOptions().....);

Then when you want to remove it:

polyline.remove();

If you have lots of Polylines, just add them to a List as they are put on the map:

List<Polyline> polylines = new ArrayList<Polyline>();

for(....)
{
    polylines.add(this.mMap.addPolyline(new PolylineOptions()....));
}

And when you want to delete:

for(Polyline line : polylines)
{
    line.remove();
}

polylines.clear();

The key is to keep a reference to the Polyline objects and call .remove() on each one.

Solution 2 - Android

I know this is very old question but I noticed that this is very common need. I found another way and I wanted to share it.

Here is the basic idea:

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);

  

Map's "addPolyline" method returns a single polyline which contains all the points. When I need to remove the points, I call polylineFinal's "remove" method.

polylineFinal.remove();

Solution 3 - Android

Update

If you want to removes all markers, polylines, polygons, overlays, etc from the map use

mMap.clear(); //it will remove all additional objects from map 

and if you only want to remove all or single polyline, polygon, marker etc see @DiskDev Answer above. In this case you must keep track of every single additional object you add to map

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionArchie.bpgcView Question on Stackoverflow
Solution 1 - AndroidDiscDevView Answer on Stackoverflow
Solution 2 - AndroidkizanlikView Answer on Stackoverflow
Solution 3 - AndroidAttique Ur RehmanView Answer on Stackoverflow