2014-11-14 18 views
9

Sto utilizzando MKMapView nella mia applicazione iOS. Ho una barra di ricerca a mio avviso. Se cerco la posizione sulla mappa, inserisco annotazioni in quella posizione cercata. Ora il problema è che voglio tornare alla mia posizione attuale. Ho visto l'applicazione Google Maps, hanno un pulsante sulla mappa che invierà l'utente alla posizione corrente.Pulsante posizione corrente su ios MKMapView

Come mostrare quel pulsante ?. E come ottenere l'evento click di quel pulsante ?.

+0

http://stackoverflow.com/questions/6169919/objective-c-mkmapview-center-on-user-location – Anil

risposta

7
- (void)viewDidLoad 
{ 
    [super viewDidLoad];  
    MKUserTrackingBarButtonItem *buttonItem = [[MKUserTrackingBarButtonItem alloc] initWithMapView:self.map]; 
    self.navigationItem.rightBarButtonItem = buttonItem; 
} 
+0

Grazie! Ha funzionato bene. – Raja

3

SOLUZIONE 1:

Trascinare un UIButton al UIViewController nello storyboard e collegarlo a un IBAction nel ViewController.m.

-(IBAction)zoomToUserLocation:(id)sender{ 
    MKCoordinateRegion mapRegion; 
    mapRegion.center = mapView.userLocation.coordinate; 
    mapRegion.span.latitudeDelta = 0.2; 
    mapRegion.span.longitudeDelta = 0.2; 

    [mapView setRegion:mapRegion animated: YES]; 
} 

SOLUZIONE 2:

Oppure è possibile creare il pulsante di programmazione come questo:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button addTarget:self 
     action:@selector(zoomToUserLocation:) 
forControlEvents:UIControlEventTouchUpInside]; 

[button setTitle:@"My Location" forState:UIControlStateNormal]; 
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0); 
[view addSubview:button]; 

con il seguente metodo:

-(void)zoomToUserLocation{ 
    MKCoordinateRegion mapRegion; 
    mapRegion.center = mapView.userLocation.coordinate; 
    mapRegion.span.latitudeDelta = 0.2; 
    mapRegion.span.longitudeDelta = 0.2; 

    [mapView setRegion:mapRegion animated: YES]; 
} 
+0

Questo invia mappa per posizione dell'utente, ma come aggiungere il pulsante? – stoffen

+1

@stoffen Grazie, ho aggiornato la mia risposta :) –

+0

@selector (zoomToUserLocation) rimuovere ":" perché non è necessario inviare il pulsante al metodo come parametro –

0

È necessario creare un MKUserTrackingBarButtonItem e passarlo allo MKMapview nel costruttore, quindi aggiungere l'elemento del pulsante al menu di navigazione (o dove dovrebbe essere il tuo pulsante).

(void) viewDidLoad 
{ 
    [super viewDidLoad];  
    MKUserTrackingBarButtonItem *buttonItem = [[MKUserTrackingBarButtonItem alloc] initWithMapView:self.map]; 
    self.navigationItem.rightBarButtonItem = buttonItem; 
} 
0

Swift 3+

let buttonItem = MKUserTrackingBarButtonItem(mapView: mapView) 
self.navigationItem.rightBarButtonItem = buttonItem 
Problemi correlati