ios MKMapView上的当前位置按钮

Rak*_*esh 13 iphone mapkit mkmapview ios

我在我的iOS应用程序中使用MKMapView.在我看来,我有搜索栏.如果我在地图上搜索位置,我会在搜索到的位置上添加注释.现在的问题是,我想回到我现在的位置.我见过谷歌地图应用程序,他们在地图上有一个按钮,可以将用户发送到当前位置.

如何显示该按钮?以及如何获得该按钮的点击事件?

小智 12

- (void)viewDidLoad
{
    [super viewDidLoad];    
    MKUserTrackingBarButtonItem *buttonItem = [[MKUserTrackingBarButtonItem alloc] initWithMapView:self.map];
    self.navigationItem.rightBarButtonItem = buttonItem;
}
Run Code Online (Sandbox Code Playgroud)


Iva*_*and 8

解决方案1:

UIButton 拖到故事板中的UIViewController,并将其连接到ViewController.m中的IBAction .

-(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];
}
Run Code Online (Sandbox Code Playgroud)

解决方案2:

或者您可以通过编程方式创建按钮:

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];
Run Code Online (Sandbox Code Playgroud)

使用以下方法:

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

    [mapView setRegion:mapRegion animated: YES];
}
Run Code Online (Sandbox Code Playgroud)


小智 5

斯威夫特 3+

let buttonItem = MKUserTrackingBarButtonItem(mapView: mapView)
self.navigationItem.rightBarButtonItem = buttonItem
Run Code Online (Sandbox Code Playgroud)