2012-07-02 113 views
1

所以,我在MKMapView上創建註釋引腳的位置時遇到了問題。註釋引腳

我只是寫了一個可從NSObject繼承的類,名爲「Annotation」,它使用協議。

所以,這裏的代碼:

Annotation.h

#import <Foundation/Foundation.h> 

@interface Annotation : NSObject <MKAnnotation> 
{ 
    CLLocationCoordinate2D _coordinate; 
    NSUInteger _pinID; 
} 

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate; 

- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate andID:(NSUInteger)pinID; 

@end 

Annotation.m

#import "Annotation.h" 

@implementation Annotation 

@synthesize coordinate=_coordinate; 

- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate andID:(NSUInteger)pinID{ 
    self = [super init]; 
    if (self != nil) { 
     _coordinate = coordinate; 
     _pinID = pinID; 
    } 
    return self; 
} 

- (NSString *)title { 
    return [NSString stringWithFormat:@"Pin %u", _pinID]; 
} 

- (NSString *)subtitle { 
    return [NSString stringWithFormat:@"%.4f, %.4f", _coordinate.latitude, _coordinate.longitude]; 
} 

@end 

於是,我試圖把它與foloowing代碼

連接到我的地圖MapViewController.m

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    CLLocationCoordinate2D coordinate; 
    coordinate.latitude = 49.2802; 
    coordinate.longitude = -123.1182; 
    mapView.delegate = self; 
    mapView.region = MKCoordinateRegionMakeWithDistance(coordinate, 2000, 2000); 


    CLLocationCoordinate2D newCoord = {2000, 2000}; 
    Annotation* annotation = [[Annotation alloc] initWithCoordinate:newCoord andID:1]; 
    [mapView addAnnotation:annotation]; 
} 

但是這個沒有任何意義,引腳沒有顯示。我究竟做錯了什麼? 我期待的幫助和教訓,但沒有工作結果。

回答

0

註釋的座標是無效的:

CLLocationCoordinate2D newCoord = {2000, 2000}; 
Annotation* annotation = [[Annotation alloc] initWithCoordinate:newCoord ... 

緯度,2000的經度,2000是無效的。


你可能想使用coordinate變量而不是(你在viewDidLoad定義了幾行):

Annotation* annotation = [[Annotation alloc] initWithCoordinate:coordinate andID:1]; 
+0

註解仍然沒有工作...我想想也許有些選項需要被激活,因爲我沒有錯誤信息或者什麼 – user1496491

+0

mapView是一個IBOutlet(它在xib中)?如果它是IBOutlet,請確保xib中的地圖視圖控件連接到文件所有者的插座。如果它沒有被添加到xib中,並且您打算以編程方式創建它,那麼在viewDidLoad中,您需要首先分配/初始化它,設置其框架並將其作爲子視圖添加到視圖控制器的視圖中。 – Anna

0

試試這個

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    CLLocationCoordinate2D coordinate; 
    coordinate.latitude = 49.2802; 
    coordinate.longitude = -123.1182; 
    mapView.delegate = self; 
    mapView.region = MKCoordinateRegionMakeWithDistance(coordinate, 2000, 2000); 

    Annotation* annotation = [[Annotation alloc] initWithCoordinate:coordinate andID:1]; 
    [mapView addAnnotation:annotation]; 
}