我有一个实现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
是你想要的吗?