Przykładowe aplikacji WorldCities pokazuje w jaki sposób można powiększyć do danej lokalizacji, ale to nie spadnie tam szpilkę. Kolejna aplikacja próbka nazywa MapCallouts robi szpilki drop ale nie powiększać.
Część zoom jest łatwe (patrz metoda didChooseWorldCity w WorldCities).
Aby umieścić pinezkę, trzeba wysłać wiadomość addAnnotation do MapView i wysłać go do obiektu, który implementuje protokół MKAnnotation. Więc najpierw trzeba utworzyć klasę, która implementuje MKAnnotation. Oto przykład nazywa 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
Teraz można zmodyfikować próbkę WorldCities dodając ten kod na początku metody animateToPlace:
MyMapPin *pin = [[MyMapPin alloc] initWithCoords:worldCity.coordinate];
[mapView addAnnotation:pin];
[pin release];
worldCity.coordinate w aplikacji WorldCities jest tylko właściwością typu CLLocationCoordinate2D która ma dwa pola szerokości i długości geograficznej. Te dwa pływaki pójdzie tam.
Zauważ, że addAnnotation będzie po prostu umieścić kołek w mieście. Aby uzyskać animowany spada pin, masz również do wdrożenia metody viewForAnnotation i ustaw animatesDrop Tak. Zobacz przykład w MapViewController.m w MapCallouts. Również ustawić delegować MapView do gdziekolwiek metoda viewForAnnotation realizowany jest (zazwyczaj self / plik za Właściciel).