ios MKMapView上的当前位置按钮

时间:2014-11-14 11:28:59

标签: ios iphone mkmapview mapkit

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

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

4 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:6)

解决方案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];
}

解决方案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];

使用以下方法:

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

    [mapView setRegion:mapRegion animated: YES];
}

答案 2 :(得分:4)

Swift 3 +

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

答案 3 :(得分:0)

您需要创建一个MKUserTrackingBarButtonItem并将其传递给构造函数中的MKMapview,然后将该按钮项添加到导航菜单(或者按钮应该在哪里)。

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