Remove a marker from a GoogleMap

android, google-maps

Solution

The method signature for `addMarker` is:

public final Marker addMarker (MarkerOptions options)

So when you add a marker to a `GoogleMap` by specifying the options for the marker, you should save the `Marker` object that is returned (instead of the `MarkerOptions` object that you used to create it). This object allows you to change the marker state later on. When you are finished with the marker, you can call `Marker.remove()` to remove it from the map.

As an aside, if you only want to hide it temporarily, you can toggle the visibility of the marker by calling `Marker.setVisible(boolean)`.

Problem

In the new Google Maps API for Android, we can add a marker, but there is no way to (easily) remove one. My solution is to keep the markers in a map and redraw the map when I want to remove a marker, but it is not very efficient. ``` private final Map<String, MarkerOptions> mMarkers = new ConcurrentHashMap<String, MarkerOptions>(); private void add(String name, LatLng ll) { final MarkerOptions marker = new MarkerOptions().position(ll).title(name); mMarkers.put(name, marker); runOnUiThread(new Runnable() { @Override public void run() { mMap.addMarker(marker); } }); } private void remove(String name) { mMarkers.remove(name); runOnUiThread(new Runnable() { @Override public void run() { mMap.clear(); for (MarkerOptions item : mMarkers.values()) { mMap.addMarker(item); } } }); } ``` Does anyone have a better idea?

Original source

Related problems