Hvordan tar jeg et par av breddegrad, lengdegrad flyter og få MKMapView å slippe en pin og vise posisjonen?

stemmer
0

Gitt et par flyter for lengde- og breddegrad, og en MapView, hvordan får jeg MapView å slippe en pin i stedet og zoom på skjermen for å vise posisjonen?

Jeg har lest gjennom noen av SO innleggene og de alle synes å være om spesifikke aspekter ved dette, men jeg har ikke vært i stand til å sette dem sammen i hodet mitt.

Tusen takk! -Oppriktig

Publisert på 08/05/2010 klokken 21:04
kilden bruker
På andre språk...                            


1 svar

stemmer
1

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).

Svarte 09/05/2010 kl. 02:54
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more