MKAnnotation ne montrant pas de légende sur MKMapView
J'ai un MKMapView
et je suis ajoutant des annotations comme ceci:
for (NSDictionary *tmp in response)
{
NSDictionary *places = [tmp objectForKey:@"place"];
NSDictionary *location = [places objectForKey:@"location"];
NSLog(@"long: %@ Lat:%@",[location objectForKey:@"longitude"], [location objectForKey:@"latitude"]);
float longitude = [[location objectForKey:@"longitude"] floatValue];
float latitude = [[location objectForKey:@"latitude"] floatValue];
CLLocationCoordinate2D locationco = {latitude,longitude};
NSString *titleString = [tmp objectForKey:@"name"];
Place *pin = [[Place alloc] init];
pin.coordinate = locationco;
pin.title = titleString;
pin.subtitle = @"A Location";
//NSArray *annots = [[NSArray alloc] initWithObjects:pin, nil];
//[map addAnnotations:annots];
[map addAnnotation:pin];
[[map viewForAnnotation:pin] setCanShowCallout:YES];
}
La MKAnnotation
s'afficher sur la carte fine, et je peux les sélectionner, cependant, aucune légende bulle apparaît. Je sais qu'ils sont en train d'être sélectionné correctement le formulaire de cette
-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
[view setCanShowCallout:YES];
NSLog(@"Title:%@",[view.annotation description]);
}
Mais qui se contente d'afficher
Title:(null)
Je suis à l'aide de l'ARC, et j'ai les propriétés définies dans mon Lieu de l'objet en tant que tel:
@property (nonatomic) CLLocationCoordinate2D coordinate;
@property (nonatomic,readwrite, copy) NSString *title;
@property (nonatomic,readwrite, copy) NSString *subtitle;
Ce que je fais mal/manquant?
Merci.
Avant la
Le
addAnnotation
ligne, pouvez-vous NSLog pin.title
et voir ce qu'il montre? Aussi, à la Place de l'objet avez-vous remplacer le description
méthode, par hasard, et si oui quel est le code qui est là?Le
NSLog(@"%@",pin.title);
retourne Juste (null)
. Je ne comprends pas pourquoi.OriginalL'auteur Amit Shah | 2011-11-20
Vous devez vous connecter pour publier un commentaire.
La légende n'est pas parce que le
title
estnil
.Il n'est pas nécessaire de mettre en œuvre
viewForAnnotation
pour afficher les légendes depuis la carte par défaut de la vue de mise en œuvre montre des légendes. (Cependant, si vous ne la mettre en œuvre, vous devez définircanShowCallout
dans ce délégué méthode et non pas où vous êtes en train de faire maintenant.)Même si vous définissez
canShowCallout
àYES
, la légende encore de ne pas s'afficher si letitle
estnil
ou vide.Journal de la
tmp
dictionnaire. Lename
clé est vide ou n'existe pas.il n'y a pas de propriété tiltile pour MKPinAnnotationView. comment puis-je faire de même.
C'était le problème pour moi aussi.
OriginalL'auteur
Vous avez besoin pour mettre en œuvre MKMapViewDelegate méthode
mapView:viewForAnnotation:
, qui crée la vue et le renvoie. Dans cet appel de méthode[view setCanShowCallout:YES];
sur la vue de votre retour pour l'annotation.Parce que le
mapView:didSelectAnnotationView:
est appelée APRÈS que le code pin a été sélectionné, il n'aura aucun effet sur l'activation/la désactivation de la légende.pin.title
n'est pas réglée correctement, que si j'essaie d'imprimer juste après, il suffit de le prings(null)
Désolé, totalement négliger le fait que, vous devez accepter l'autre réponse, car il est absolument correct. 🙂
OriginalL'auteur Henri Normak