Supprimer un marqueur d'une GoogleMap

Dans la nouvelle de l'API Google Maps pour Android, nous pouvons ajouter un marqueur, mais il n'y a aucun moyen de (facilement) en supprimer une.

Ma solution est de garder les marqueurs sur une carte et de redessiner la carte, lorsque je veux supprimer un marqueur, mais il n'est pas très efficace.

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

Quelqu'un a une meilleure idée?

  • Pourquoi utilisez-vous un Runnable() pour ajouter des marqueurs?
  • Faire ça sur le thread de l'INTERFACE utilisateur
  • utiliser mMap.clear() pour effacer tous les marqueurs
InformationsquelleAutor Jonas | 2012-12-03