2014-12-07 86 views
1

我遇到問題,獲取註釋以在iOS應用程序的地圖上顯示。MapKit註釋未出現

我遵循文檔中的約定。從調試看來,viewForAnnotation永遠不會被註釋到註釋點。

的視圖控制器的代碼是:

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super 
    // Do any additional setup after loading the view, typically from a nib. 

    self.mapView.delegate = self; 
    self.locationManager = [[CLLocationManager alloc] init]; 
    self.locationManager.delegate = self; 

    [self.locationManager requestAlwaysAuthorization]; 

    [self.locationManager startUpdatingLocation]; 

    self.mapView.showsUserLocation = YES; 
    [self.mapView setMapType:MKMapTypeStandard]; 
    [self.mapView setZoomEnabled:YES]; 
    [self.mapView setScrollEnabled:YES]; 

    self.locationManager.distanceFilter = kCLDistanceFilterNone; 
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    [self.locationManager startUpdatingLocation]; 


    //View Area 
    MKCoordinateRegion region = { { 0.0, 0.0 }, { 0.0, 0.0 } }; 
    region.center.latitude = self.locationManager.location.coordinate.latitude; 
    region.center.longitude = self.locationManager.location.coordinate.longitude; 
    region.span.longitudeDelta = 0.005f; 
    region.span.longitudeDelta = 0.005f; 
    [self.mapView setRegion:region animated:YES]; 


    [self.mapView addAnnotations:[self createAnnotations]]; 
} 

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:YES]; 

} 

- (void)didReceiveMemoryWarning {  
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
    { 
     NSLog(@"viewForAnnotation"); 

     if([annotation isKindOfClass:[MKUserLocation class]]) { 
      return nil; 
     } 

     MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] init]; 

     pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"foo"]; 

     [pinView setPinColor:MKPinAnnotationColorGreen]; 
     pinView.animatesDrop = YES; 
     pinView.canShowCallout = YES; 

     return pinView; 
} 

- (NSMutableArray *)createAnnotations 
{ 
    NSMutableArray *annotations = [[NSMutableArray alloc] init]; 
    CLLocationCoordinate2D coord; 
    coord.latitude = 37.4; 
    coord.longitude = -122.2; 
    MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; 
    [annotations addObject:annotation]; 
    return annotations; 
} 

@end 

回答

0

一個明顯的問題是在這裏的createAnnotations方法:

CLLocationCoordinate2D coord; 
coord.latitude = 37.4; 
coord.longitude = -122.2; 
MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; 
[annotations addObject:annotation]; 


annotationcoordinate屬性從未設置。

集將在創建後annotation

MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; 
annotation.coordinate = coord; // <-- add this line 
[annotations addObject:annotation]; 
+0

感謝您的-問題仍然是該viewForAnnotation目前還只能被稱爲用戶點。 – 2014-12-07 03:11:05