2010-05-21 13 views
14

¿Puedo crear un MKAnnotation, o es de solo lectura? Tengo coordenadas, pero no me resulta fácil crear manualmente un MKAnnotation con el uso de setCoordinate.iPhone: Crear MKAnnotation

Ideas?

Respuesta

40

MKAnnotation es un protocolo. Por lo tanto, debe escribir su propio objeto de anotación que implemente este protocolo. Por lo que su cabecera MyAnnotation parece:

@interface MyAnnotation : NSObject<MKAnnotation> { 
    CLLocationCoordinate2D coordinate; 
} 

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate; 

// add an init method so you can set the coordinate property on startup 
- (id) initWithCoordinate:(CLLocationCoordinate2D)coord; 

y su puesta en práctica se parece a (MyAnnotation.m):

- (id) initWithCoordinate:(CLLocationCoordinate2D)coord 
{ 
    coordinate = coord; 
    return self; 
} 

Así añadir su anotación para el mapa:

MyAnnotation * annotation = [[[MyAnnotation alloc] initWithCoordinate:coordinate] autorelease]; 
[self.mapView addAnnotation:annotation]; 

Si no desea un título ni subtítulo en la llamada de la anotación, debe agregar el título y las propiedades de los subtítulos.

+0

Esto es justo lo que necesitaba. Donde pondría el - (id) initWithCoordinate: (CLLocationCoordinate2D) coord; ¿método? En mi archivo .h o .m? –

+0

No hay problema. He actualizado la respuesta con más detalles :) – RedBlueThing

+0

Por alguna razón, no obtengo el método '-initWithCoord:' que se encuentra cuando intento compilar y ejecutar. –

32

En iPhone OS 4 hay una nueva clase MKPointAnnotation que es una implementación concreta del protocolo MKAnnotation.

+0

Gracias por señalar esto joshrl –

+1

Esto es muy útil si solo necesitas anotaciones básicas. ¡Gracias! – radven

+4

MKPointAnnotation * pointAnnotation = [[MKPointAnnotation alloc] init]; pointAnnotation.coordinate = location.coordinate; [mkMapView addAnnotación: pointAnnotation]; –

Cuestiones relacionadas