2010-02-09 4 views
6

L'utilisation d'un MKMapView comporte une pile d'annotations chargées et je souhaite pouvoir filtrer les annotations affichées avec un contrôle segmenté. J'utilise des annotations personnalisées avec une variable de type afin que je puisse les distinguer les unes des autres mais je n'ai pas réussi à trouver un moyen de masquer et d'afficher un sous-ensemble de vues d'annotations à volonté.Masquage des annotations de carte sans les supprimer

Répondre

8

Bien sûr, essayez ceci:

solution Objective-C:

[[yourMapView viewForAnnotation:yourAnnotation] setHidden:YES] 

Swift 4 solution:

yourMapView.view(for: yourAnnotation)?.isHidden = true 

Cela vous ramènera la vue associée à la spécifiée objet d'annotation, vous pouvez définir la vue à caché. Voici le documentation.

+0

Merci pour cela, a travaillé un régal. Désolé de ne pas y revenir plus tôt. – Affian

+0

np ... Content de vous aider! –

+0

Lors du filtrage est-il préférable de cacher l'annotation ou de la supprimer? – lostintranslation

0

si vous voulez cacher la MKAnnotationView (bulle), vous pouvez créer un personnalisé:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 

    if (annotation==self.map.mapView.userLocation) 
     return nil; 


    MKAnnotationView *annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"loc"]; 
    if([annotation isKindOfClass:[AnnotationCustomClass class]]) { 
     annotationView.canShowCallout = NO; // <- hide the bubble 

    } 

    return annotationView; 

} 
Questions connexes