2009-12-05 4 views
4

Ceci est ma méthode -mapView:viewForAnnotation qui supprime les épingles lorsque je crée des vues d'annotation. Mais quand je mets mapView.showsUserLocation = YES; en -viewDidLoad, je reçois une broche tombée sur Infinite Loop (attendue - dans le simulateur) et pas le point bleu normal.showsUserLocation renvoie la broche au lieu du point bleu dans le simulateur de l'iPhone

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{ 
    MKAnnotationView *anno = nil; 
    //create a pin annotation view 
MKPinAnnotationView *pin=[[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pin"]autorelease]; 

    [pin setPinColor:MKPinAnnotationColorRed]; 
    pin.animatesDrop=YES; 
    pin.canShowCallout = YES; 
    pin.calloutOffset = CGPointMake(-5, 5); 
    anno = pin; 
    return anno; 
} 

Comment puis-je l'obtenir pour faire tomber les broches et montrer le point bleu?

Merci

Répondre

23

vraiment simple à corriger, bien sûr si cela est la bonne façon de le faire ...

if (annotation == mapView.userLocation){ 
    return nil; //default to blue dot 
} 
+2

C'est la bonne façon de procéder. –

+0

Et vous devez vous demander * pourquoi * est-ce la bonne façon et pourtant nous ne pouvons pas 'setUserLocation' .... – chakrit

0

similaires à l'autre réponse, voici quelque chose près:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 
    NSString *annotationType = [NSString stringWithCString:object_getClassName(annotation)]; 
    if ([annotationType compare:@"NSKVONotifying_MKUserLocation"] == 0) 
     return nil; 
    ... 
} 

Bien sûr, utilisez quelque chose comme ça à vos risques et périls. Il pourrait cesser de fonctionner demain si Apple décidait de changer ce nom.

0

Souvent, vous utilisez votre propre classe d'annotation pour rechercher des informations relatives à l'annotation. Dans ce cas, pour gérer uniquement vos propres annotations, utilisez quelque chose comme

if ([annotation isKindOfClass:[MapLocation class]]) {} 
Questions connexes