Existe-t-il un moyen simple de supprimer toutes les annotations sur une carte sans parcourir toutes les annotations affichées dans Objective-c?
la source
Existe-t-il un moyen simple de supprimer toutes les annotations sur une carte sans parcourir toutes les annotations affichées dans Objective-c?
Oui, voici comment
[mapView removeAnnotations:mapView.annotations]
Cependant, la ligne de code précédente supprimera toutes les annotations de carte "PINS" de la carte, y compris la broche de localisation de l'utilisateur "Blue Pin". Pour supprimer toutes les annotations de la carte et conserver l'épingle de localisation de l'utilisateur sur la carte, il existe deux méthodes possibles.
Exemple 1, conservez l'annotation de l'emplacement de l'utilisateur, supprimez toutes les broches, ajoutez la broche de l'emplacement de l'utilisateur, mais il y a un défaut avec cette approche, cela provoquera le clignotement de la broche de l'emplacement de l'utilisateur sur la carte, en raison de la suppression de la broche puis de son ajout arrière
- (void)removeAllPinsButUserLocation1
{
id userLocation = [mapView userLocation];
[mapView removeAnnotations:[mapView annotations]];
if ( userLocation != nil ) {
[mapView addAnnotation:userLocation]; // will cause user location pin to blink
}
}
Exemple 2, je préfère personnellement éviter de supprimer la broche de l'utilisateur de l'emplacement en premier lieu,
- (void)removeAllPinsButUserLocation2
{
id userLocation = [mapView userLocation];
NSMutableArray *pins = [[NSMutableArray alloc] initWithArray:[mapView annotations]];
if ( userLocation != nil ) {
[pins removeObject:userLocation]; // avoid removing user location off the map
}
[mapView removeAnnotations:pins];
[pins release];
pins = nil;
}
Voici le moyen le plus simple de le faire:
la source
Voici comment supprimer toutes les annotations à l'exception de l'emplacement de l'utilisateur, écrit explicitement car j'imagine que je reviendrai chercher cette réponse:
la source
Ceci est très similaire à la réponse de Sandip, sauf qu'il ne rajoute pas l'emplacement de l'utilisateur afin que le point bleu ne clignote plus.
la source
Vous n'avez pas besoin d'enregistrer de référence à l'emplacement de l'utilisateur. Il suffit de:
Et tant que vous avez
mapView.showsUserLocation
défini surYES
, vous aurez toujours l'emplacement de l'utilisateur sur la carte. Les paramètres de cette propriétéYES
demandent essentiellement à la vue de la carte de commencer à mettre à jour et à récupérer l'emplacement de l'utilisateur, pour l'afficher sur la carte. D'après lesMKMapView.h
commentaires:la source
Version Swift:
la source
Swift 3
la source
Swift 2.0 Simple et le meilleur:
la source
Pour supprimer un type de sous-classe, vous pouvez faire
où
PlacesAnnotation
est une sous-classe deMKAnnotation
la source