Come faccio a prendere un paio di latitudine, longitudine e carri ottenere il MKMapView far cadere uno spillo e visualizzare la posizione?

voti
0

Data una coppia di galleggianti per latitudine e longitudine, e un MapView, come faccio ad ottenere il MapView a cadere uno spillo nella posizione e zoom lo schermo per visualizzare la posizione?

Ho letto attraverso alcune delle SO post e tutti sembrano essere di circa aspetti specifici di questo, ma non sono stato in grado di mettere insieme nella mia testa.

Grazie mille! -Franco

È pubblicato 08/05/2010 alle 22:04
fonte dall'utente
In altre lingue...                            


1 risposte

voti
1

L'applicazione di esempio WorldCities mostra come è possibile eseguire lo zoom in un determinato luogo, ma non cade uno spillo lì. Un'altra applicazione di esempio denominato MapCallouts fa perni goccia, ma non zoomare.

La parte zoom è facile (vedi il metodo didChooseWorldCity in WorldCities).

Per eliminare una spina, è necessario inviare il messaggio AddAnnotation al mapview e inviarlo un oggetto che implementa il protocollo MKAnnotation. Quindi, prima è necessario creare una classe che implementa MKAnnotation. Ecco un esempio chiamato 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

Ora è possibile modificare l'esempio WorldCities aggiungendo questo codice all'inizio del metodo animateToPlace:

MyMapPin *pin = [[MyMapPin alloc] initWithCoords:worldCity.coordinate];
[mapView addAnnotation:pin];
[pin release];

worldCity.coordinate in app WorldCities è solo una proprietà di tipo CLLocationCoordinate2D che ha due campi di latitudine e longitudine. I due galleggianti sarebbero andare in là.

Si noti l'AddAnnotation sarà solo mettere uno spillo alla città. Per ottenere un perno cadere animata, si hanno anche per implementare il metodo viewForAnnotation e impostare animatesDrop su YES. Vedere un esempio in MapViewController.m in MapCallouts. Impostare anche il delegato del mapview ovunque è implementato il metodo viewForAnnotation (di solito auto / proprietario del file).

Risposto il 09/05/2010 a 03:54
fonte dall'utente

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