2009-07-15 7 views
1

J'ai trois broches sur une carte. Je voudrais donner à chacun une couleur différente. Dans la méthode délégué viewForAnnotation, je fais ceci:Comment différencier les broches d'annotation?

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{ 
MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"anAddress"]; 
annView.pinColor = MKPinAnnotationColorGreen; 
annView.animatesDrop=TRUE; 
annView.canShowCallout = YES; 
annView.calloutOffset = CGPointMake(-5, 5); 
return annView; 
} 

Je pensais à créer un tableau de MKPinAnnotationViews mais comment puis-je obtenir la bonne puisque la méthode déléguée n'est pas indexé à quoi que ce soit?

Répondre

3

Pour distinguer UIView, vous pouvez utiliser the tag property et sa méthode viewWithTag: correspondante.

Cependant, dans votre contexte, je vous recommande d'ajouter la couleur à votre classe d'annotation. Ensuite, vous pouvez vous assurer que vous ne réutilisez pas le même appelant pour plusieurs broches.

+0

Vous voulez dire en faisant un MKPinAnnotationView personnalisé? Mais encore, comment puis-je appeler le bon quand le délégué déclenche? Ou est-ce important? Si ce n'est pas le cas, je peux juste garder un compteur au niveau de la classe pour les sortir d'un tableau à chaque coup de feu du délégué. – 4thSpace

+0

Je veux dire que votre classe id contient un champ pour l'indicateur de couleur, ou un compteur que vous utilisez pour déterminer la couleur. – notnoop

+0

Parfait! Merci. – 4thSpace

Questions connexes