如何显示对实现MkAnnotation协议的对象的调用



我有一个实现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

将这个对象添加到地图中效果非常好,因为我可以看到红色的引脚被丢弃。但是,当我想将此对象设置为显示详图索引时,就会出现问题。

我无法进行注释。showCallOut=YES,因为"MkAnnotation"没有此属性,但MkAnninationView有。我该如何解决这个问题?

我试图实现映射回调"viewForAnnotation"来检查"VoiceMemoryAnnotation",我试图返回一个新的"MkAnnotationView"并将其设置为callout=YES,但当我这样做时,我开始遇到分段错误。

你知道我做错了什么吗?

首先,您需要创建注释对象(实现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。

我不确定我是否完全理解你的问题,但我想知道,MKMapViews- (void)selectAnnotation:(id <MKAnnotation>)annotation animated:(BOOL)animated是你想要的吗?

相关内容

  • 没有找到相关文章

最新更新