2012-03-11 68 views
1

我有實現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 

添加此對象的地圖完美的作品,因爲我可以看到紅色圖釘被丟棄。但是,當我想要設置此對象以顯示標註時,會出現問題。

我不能做annotation.showCallOut = YES,因爲「MkAnnotation」沒有這個屬性,但是一個MkAnnotationView。我如何解決這個問題?

我試圖實現地圖回調「viewForAnnotation」來檢查「VoiceMemoryAnnotation」,我嘗試返回一個新的「MkAnnotationView」並將其設置爲callout = YES,但是當我這樣做時,我開始出現分段錯誤。

任何想法我「米做錯了嗎?

回答

2

首先,你需要創建註釋對象(即實現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將無法正常工作,它需要MKPinAnn otationView。

+1

這正是我所需要的。另外,我發現我之所以會出現「seg故障」,是因爲在將屬性設置爲YES後,未能將標題添加到標註中。一旦我添加了標題選擇器,它完美地工作,並顯示帶標題的標註。 – user1068636 2012-03-11 07:55:02

0

我不確定我完全理解你的問題,但我想知道,是MKMapViews- (void)selectAnnotation:(id <MKAnnotation>)annotation animated:(BOOL)animated你在找什麼?