39 votes

MKPinAnnotationView: Y a-t-il plus de trois couleurs disponibles?

Selon la documentation Apple, la couleur des broches de MKPinAnnotationView est disponible en rouge, vert et violet. Est-il possible d'obtenir d'autres couleurs aussi? Je n'ai rien trouvé dans la documentation.

81voto

yonel Points 6648

plus d'autres ;)

alt textenter image description here

alt textenter image description here

alt text

Et les originaux (avec écran retina ainsi maintenant ! ;) :

alt textalt text

alt textalt text

alt textalt text

Et le code


- (MKAnnotationView *)mapView:(MKMapView 

40voto

RedBlueThing Points 21332

Vous pourriez trouver les images suivantes utiles:

texte alternatiftexte alternatiftexte alternatiftexte alternatif

et le code pour les utiliser dans viewForAnnotation :

 - (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation
{   
    // ... get the annotation delegate and allocate the MKAnnotationView (annView)
    if ([annotationDelegate.type localizedCaseInsensitiveCompare:@"NeedsBluePin"] == NSOrderedSame)
    {
        UIImage * image = [UIImage imageNamed:@"blue_pin.png"];
        UIImageView *imageView = [[[UIImageView alloc] initWithImage:image] autorelease];
        [annView addSubview:imageView];
    }
    // ...
 

11voto

Nic Hubbard Points 11309

Vous pouvez utiliser ZSPinAnnotation pour créer des repères d'annotation à la volée avec un UIColor spécifié: https://github.com/nnhubbard/ZSPinAnnotation

8voto

BadPirate Points 11614

J'aime bien la réponse de Yonel, mais juste un avertissement , lorsque vous créez un MKAnnotationView personnalisé, vous devez attribuer manuellement le décalage. Pour les images fournies par Yonel: (vous pouvez omettre la légendeButton, si vous n'en avez pas besoin)

 #pragma mark MKMapViewDelegate
- (MKAnnotationView *)mapView:(MKMapView *)aMapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    if(![annotation isKindOfClass:[MyAnnotation class]]) // Don't mess user location
        return nil;

    MKAnnotationView *annotationView = [aMapView dequeueReusableAnnotationViewWithIdentifier:@"spot"];
    if(!annotationView)
    {
        annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"spot"];
        annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        [(UIButton *)annotationView.rightCalloutAccessoryView addTarget:self action:@selector(openSpot:) forControlEvents:UIControlEventTouchUpInside];
        annotationView.enabled = YES;
        annotationView.canShowCallout = YES;
        annotationView.centerOffset = CGPointMake(7,-15);
        annotationView.calloutOffset = CGPointMake(-8,0);
    }

    // Setup annotation view
    annotationView.image = [UIImage imageNamed:@"pinYellow.png"]; // Or whatever

    return annotationView;
}
 

3voto

malcolmhall Points 1909

Ni des solutions de travail à 100% si vous êtes en utilisant le code pin drop animation. Canonnade de la solution est très soignée, car elle permet à la broche pour encore deux sortes d'extrémités (la pointe en cas de chute et celui avec le papier circulaire ondulation) mais malheureusement un aperçu de l'original de la tête d'épingle de couleur peut être vu quand la broche rebondit comme il frappe la carte. yonel de la solution de remplacement de l'ensemble de la broche de l'image de la pin tombe avec la circulaire du papier ondulation avant de frapper la carte!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X