Comment afficher un appel d'offres pour l'objet qui implémente MkAnnotation protcol ?

StackOverflow https://stackoverflow.com//questions/9652051

  •  11-12-2019
  •  | 
  •  

Question

J'ai un objet qui implémente l'MKAnnotation protocole:

#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
@interface VoiceMemoryAnnotation : NSObject <MKAnnotation> {
    NSString * blobkey;
}
@property (nonatomic, retain) NSString * blobkey;

-(id)initWithBlobkey:(NSString *) key andCoordinate:(CLLocationCoordinate2D) c;
@end

L'ajout de cet objet une carte fonctionne parfaitement depuis que je puisse voir le rouge broches d'être supprimé.Cependant, le problème se pose lorsque je veux mettre cet objet à afficher une légende.

Je ne peux pas faire d'annotation.showCallOut=OUI parce qu'un "MkAnnotation" n'a pas cette propriété, mais un MkAnnotationView n'.Comment puis-je contourner ce problème?

J'ai essayé de mettre en œuvre le plan de rappel "viewForAnnotation" pour vérifier "VoiceMemoryAnnotation" et j'essaie de revenir une nouvelle "MkAnnotationView" et ensemble de légende = OUI, mais je commence à avoir une erreur de segmentation quand je fais cela.

Toutes les idées que je me fais de mal?

Était-ce utile?

La solution

Tout d'abord, vous devez créer votre objet d'annotation (celui qui implémente le protocole Mkannotation) et l'ajouter à votre carte en utilisant quelque chose comme

VoiceMemoryAnnotation*VMA = [[VoiceMemoryAnnotation alloc] init];
VMA.title = @"Title String";
VMA.subtitle = @"Subtitle String";

[self.mapView addAnnotation:VMA];

qui appellera automatiquement la méthode suivante que vous devrez implémenter:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
 {
     MKPinAnnotationView*singleAnnotationView = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:nil];
     singleAnnotationView.canShowCallout = YES;

     return singleAnnotationView;
 }

Dans cette implémentation, MkannotationView ne fonctionnera pas, il doit être MKPinannotationView.

Autres conseils

Je ne suis pas sûr que je comprends très bien votre question, mais je me demande, est MKMapViews's - (void)selectAnnotation:(id <MKAnnotation>)annotation animated:(BOOL)animated ce que vous recherchez?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top