La aplicación de ejemplo WorldCities muestra cómo se puede hacer zoom en una ubicación dada, pero no cae un alfiler allí. Otra aplicación de ejemplo llamada MapCallouts hace pasadores de caída pero no zoom.
La parte de zoom es fácil (véase el método didChooseWorldCity en WorldCities).
Para colocar un marcador, usted tiene que enviar el mensaje a la addAnnotation MapView y enviarlo a un objeto que implementa el protocolo MKAnnotation. Así que primero es necesario crear una clase que implementa MKAnnotation. He aquí un ejemplo llamado MyMapPin:
//MyMapPin.h...
#import <MapKit/MapKit.h>
@interface MyMapPin : NSObject <MKAnnotation> {
CLLocationCoordinate2D coordinate;
NSString *subtitle;
NSString *title;
}
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic,retain) NSString *subtitle;
@property (nonatomic,retain) NSString *title;
- (id) initWithCoords:(CLLocationCoordinate2D) coords;
@end
//MyMapPin.m...
#import "MapPin.h"
@implementation MyMapPin
@synthesize coordinate;
@synthesize subtitle;
@synthesize title;
- (id) initWithCoords:(CLLocationCoordinate2D) coords {
self = [super init];
if (self != nil) {
coordinate = coords;
}
return self;
}
- (void) dealloc
{
[title release];
[subtitle release];
[super dealloc];
}
@end
Ahora se podría modificar la muestra WorldCities añadiendo este código al principio del método animateToPlace:
MyMapPin *pin = [[MyMapPin alloc] initWithCoords:worldCity.coordinate];
[mapView addAnnotation:pin];
[pin release];
worldCity.coordinate en la aplicación WorldCities es sólo una propiedad de tipo CLLocationCoordinate2D que tiene dos campos de latitud y longitud. Los dos flotadores irían allí.
Tenga en cuenta la addAnnotation simplemente pondrá un alfiler en la ciudad. Para obtener un pin de la caída de animación, también hay que poner en práctica el método viewForAnnotation y establecer animatesDrop a SÍ. Ver un ejemplo en MapViewController.m en MapCallouts. Ajuste también el delegado del MapView a donde se implementa el método viewForAnnotation (generalmente auto / del propietario del archivo).