Prøve app WorldCities viser hvordan du kan zoome inn i et gitt sted, men det faller ikke en pinne der. En annen prøve app som heter MapCallouts gjør slipp pinner, men det betyr ikke zoome.
Zoom delen er lett (se didChooseWorldCity metoden WorldCities).
Å slippe en pin, må du sende addAnnotation melding til mapview og sende det til et objekt som implementerer MKAnnotation protokollen. Så først må du lage en klasse som implementerer MKAnnotation. Her er et eksempel heter 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
Nå kan du endre WorldCities prøven ved å legge til denne koden i begynnelsen av animateToPlace metode:
MyMapPin *pin = [[MyMapPin alloc] initWithCoords:worldCity.coordinate];
[mapView addAnnotation:pin];
[pin release];
worldCity.coordinate i WorldCities app er bare en egenskap av type CLLocationCoordinate2D som har to felt breddegrad og lengdegrad. De to flottører ville gå inn der.
Legg merke til addAnnotation vil bare sette en pinne på byen. For å få en animert slippe pin, har du også å implementere viewForAnnotation metoden og sette animatesDrop til YES. Se et eksempel på MapViewController.m i MapCallouts. Også sette mapview delegat til uansett hvor viewForAnnotation metoden er implementert (vanligvis selv / File eier).