Remover um marcador de um GoogleMap

Na nova API do Google Maps para Android, podemosadicione um marcador, mas não há como (facilmente) remover um.

Minha solução é manter os marcadores em um mapa e redesenhar o mapa quando quiser remover um marcador, mas isso não é muito eficiente.

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

Alguém tem uma idéia melhor?

questionAnswers(9)

yourAnswerToTheQuestion