2010-09-01 31 views
2

J'ai un MKMapView dans mon application avec plusieurs broches et je voudrais définir des couleurs différentes pour chaque broche. Mon contrôleur de vue met en œuvre MKMapViewDelegate et j'ai défini la méthode viewForAnnotation.Plusieurs couleurs de broche sur la même carte dans MKMapView

- (MKAnnotationView *) mapView:(MKMapView *)mapView 
viewForAnnotation:(id <MKAnnotation>) annotation { 
    MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] 
     initWithAnnotation:annotation reuseIdentifier:@"pin"]; 
    annView.pinColor = MKPinAnnotationColorGreen; 
    return annView; 
} 

Fonctionne bien et change la couleur de la broche en vert. Cependant la couleur est changée pour toutes les broches et je voudrais les colorier avec plusieurs couleurs (en fonction de certains critères que je définirais, supposons que je veux avoir des épingles impaires vertes et même des épingles jaunes ou quelque chose d'aussi simple que ça). Comment cela peut il etre accompli?

Répondre

2

J'ai résolu ce problème en utilisant des images au lieu de pinColor. De cette façon, je peux avoir autant de broches que je veux.

0
if(annotation.fillsYourCriteria) 
    annView.pinColor = MKPinAnnotationColorGreen; 
else 
    annView.pinColor = MKPinAnnotationColorYellow; 
return annView; 

Quelque chose d'aussi simple que cela?

+0

Pas vraiment. L'API fournit seulement trois couleurs de broche, ce que je veux obtenir, c'est en avoir plus. – RaYell

+1

Vous pouvez utiliser https://github.com/nnhubbard/ZSPinAnnotation si vous voulez créer des pins personnalisés avec la couleur que vous voulez. –

0

J'ai rencontré le même problème alors je résolus en utilisant ce code

if([[pinView.annotation title] isEqualToString:@"Current Location"]) 
{ 
    pinView.pinColor = MKPinAnnotationColorRed; 
} 
else 
{ 
    pinView.pinColor = MKPinAnnotationColorPurple; 
} 
+0

Le seul problème avec ceci est que les API fournissent seulement 3 couleurs au choix. Dans mon cas, j'avais besoin de plus que ça. – RaYell

+0

Ya comme vous l'avez dit c'est cas exceptionnel.Nous ne pouvons pas ajouter plus de trois couleurs au lieu d'images. –