2014-11-14 15 views
9

Ich verwende MKMapView in meiner iOS-Anwendung. Ich habe Suchleiste aus meiner Sicht. Wenn ich nach einem Ort auf der Karte suche, füge ich eine Anmerkung zu diesem gesuchten Ort hinzu. Jetzt ist das Problem, ich möchte zu meinem aktuellen Standort zurückkehren. Ich habe Google Maps-Anwendung gesehen, sie haben eine Schaltfläche auf Karte, die den Benutzer an den aktuellen Speicherort senden wird.Aktueller Standort Button auf ios MKMapView

Wie man diesen Knopf zeigt ?. Und wie bekomme ich Click Event von diesem Button ?.

+0

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

Antwort

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

Vielen Dank! Es hat gut funktioniert. – Raja

3

SOLUTION 1:

Ziehen Sie eine UIButton auf Ihre UIViewController im Storyboard und verbinden Sie es mit einem IBAction im 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]; 
} 

LÖSUNG 2:

Oder Sie können Ihre Schaltfläche programmatisch wie folgt erstellen:

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]; 

mit folgender Methode:

-(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

Diese Karte auf Benutzerstandort sendet, aber Wie füge ich die Schaltfläche hinzu? – stoffen

+1

@stoffen Danke, ich habe meine Antwort aktualisiert :) –

+0

@selector (zoomToUserLocation) entfernen ":" weil Sie keine Taste zur Methode als Parameter senden müssen –

0

Sie müssen MKUserTrackingBarButtonItem erstellen und im Konstruktor die MKMapview übergeben, dann fügen Sie diese Schaltfläche zum Navigationsmenü hinzu (oder wo auch immer Ihre Schaltfläche sein sollte).

(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 
Verwandte Themen