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
Vous devez vous connecter pour publier un commentaire.
La signature de la méthode pour
addMarker
est:Ainsi, lorsque vous ajoutez un marqueur à un
GoogleMap
en spécifiant les options pour le marqueur, vous devez enregistrer leMarqueur
objet qui est retourné (au lieu de laMarkerOptions
objet que vous avez utilisé pour le créer). Cet objet permet de modifier le marqueur de l'état plus tard. Lorsque vous avez terminé avec le marqueur, vous pouvez appelerMarqueur.remove()
pour le supprimer de la carte.En aparté, si vous ne voulez masquer temporairement, vous pouvez activer /désactiver la visibilité de la marque en appelant
Marqueur.setVisible(boolean)
.pour effacer tous les gribouillis dans la carte, utiliser
Ajouter le marqueur sur la carte
Ensuite, vous serez en mesure d'utiliser la méthode remove, il ne supprimer que ce marqueur
si le marqueur existe pas supprimer le dernier marqueur. si il n'existe aucun marqueur créer marqueur actuel
1. Si vous souhaitez supprimer un marqueur vous pouvez le faire aussi
marker.remove();
sinon, vous pouvez également masquer le marqueur au lieu de le supprimer comme
et de le rendre visible, plus tard, chaque fois que nécessaire.
2. Toutefois, si vous souhaitez supprimer tous les marqueurs de la carte Utilisation
map.clear();
Remarque:
map.clear();
va également supprimerPolylines, Circles
etc.3. Si vous ne souhaitez pas supprimer
Polylines, Circles
etc. que d'utiliser une boucle pour la longueur de marqueur (si vous avez plusieurs marqueurs) pour supprimer ces Découvrez l'Exemple ici OU ensemble Visible de faux Et de ne pas utilisermap.clear();
dans de tels cas.utiliser le code suivant:
une fois que vous cliquez sur "un marqueur", vous pouvez le supprimer.
Créer un tableau avec tous les marqueurs sur ajouter à la carte.
Plus tard, utilisation:
Faire une variable globale pour garder une trace de marqueur
//Supprimer un marqueur de vieux
//Ajouter des mises à jour de marqueur et de se déplacer la caméra
Juste une REMARQUE, quelque chose que j'ai perdu le suivi des heures de ce soir...
Si vous décidez de tenir sur un marqueur pour une raison quelconque, après que vous avez SUPPRIMÉ à partir d'une carte... getTag retournera NULL, même si le reste des valeurs sera de retour avec les valeurs que vous définissez à quand la marque a été créé...
BALISE valeur est définie sur NULL si jamais vous retirez un marqueur, puis tenter de référence.
Semble être un bug pour moi...