Entfernen Sie eine Markierung aus einer GoogleMap

In der neuen Google Maps API für Android können wirfüge einen Marker hinzu, aber es gibt keine Möglichkeit, eine (leicht) zu entfernen.

Meine Lösung besteht darin, die Markierungen in einer Karte zu belassen und die Karte neu zu zeichnen, wenn ich eine Markierung entfernen möchte, dies ist jedoch nicht sehr effizient.

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

Hat jemand eine bessere Idee?

Antworten auf die Frage(9)

Ihre Antwort auf die Frage