Как показать вызов для объекта, который реализует MkAnnotation protcol? - PullRequest
0 голосов
/ 11 марта 2012

У меня есть объект, который реализует протокол MKAnnotation:

#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

При добавлении этого объекта карта работает отлично, так как я вижу, как падают красные булавки.Однако проблема возникает, когда я хочу настроить этот объект для отображения выноски.

Я не могу сделать annotation.showCallOut = YES, потому что у «MkAnnotation» нет этого свойства, но у MkAnnotationView есть.Как мне обойти это?

Я попытался реализовать обратный вызов карты «viewForAnnotation», чтобы проверить «VoiceMemoryAnnotation», и я пытаюсь вернуть новый «MkAnnotationView» и установить его callout = YES, но я начинаю получать ошибку сегментации, когда делаюэтот.

Есть идеи, что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 11 марта 2012

Сначала вам нужно создать объект аннотации (тот, который реализует протокол MKAnnotation) и добавить его на карту, используя что-то вроде

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

[self.mapView addAnnotation:VMA];

Это автоматически вызовет следующий метод, который вам нужно будет реализовать:

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

     return singleAnnotationView;
 }

В этой реализации MKAnnotationView не будет работать, это должен быть MKPinAnnotationView.

0 голосов
/ 11 марта 2012

Я не уверен, что полностью понимаю ваш вопрос, но мне интересно, MKMapViews - (void)selectAnnotation:(id <MKAnnotation>)annotation animated:(BOOL)animated то, что вы ищете?

...