2011-11-24 5 views
5

Sto cercando di annotare la mia mappa con MKPointAnnotation, in questo modo:non MKAnnotationView presentandosi sulla mappa

- (void)viewDidLoad 
{ 
    NSLog(@"RootViewController viewDidLoad"); 

    [super viewDidLoad]; 

    CLLocationCoordinate2D coord = 
    CLLocationCoordinate2DMake(54.903683,23.895435); 

    MKPointAnnotation *toyAnnotation = [[MKPointAnnotation alloc] init]; 

    toyAnnotation.coordinate = coord; 
    toyAnnotation.title = @"Title"; 
    toyAnnotation.subtitle = @"Subtitle"; 

    [mapView addAnnotation:toyAnnotation]; 

    [toyAnnotation release]; 

} 

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

    MKAnnotationView *pin = [[MKAnnotationView alloc] 
          initWithAnnotation:annotation 
          reuseIdentifier:nil]; 

    pin.enabled = YES; 
    pin.canShowCallout = YES; 

    return [pin autorelease]; 
} 

Pin non compare sulla mappa. RootViewController è un delegato per mapView e quindi mapView:viewForAnnotation: metodo viene chiamato:

2011-11-24 15:04:03.808 App[2532:707] RootViewController mapView: viewForAnnotation: 
2011-11-24 15:04:03.810 App[2532:707] <MKPointAnnotation: 0x1885c0> 

Che cosa sto facendo di sbagliato e come risolvere questo problema?

risposta

18

In viewForAnnotation, creare un MKPinAnnotationView anziché uno MKAnnotationView (per il quale è necessario impostare image).

Anche se per una vista annotazione PIN predefinito, non è necessario per l'attuazione del metodo delegato a tutti.