web-dev-qa-db-ja.com

iOSMKMapViewの現在地ボタン

IOSアプリケーションでMKMapViewを使用しています。ビューに検索バーがあります。地図上で場所を検索すると、その検索場所に注釈が付けられます。問題は、現在の場所に戻りたいということです。私はグーグルマップアプリケーションを見ました、彼らはユーザーを現在の場所に送る地図上に1つのボタンを持っています。

そのボタンを表示する方法は?そして、そのボタンのクリックイベントを取得する方法は?.

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

ソリューション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];
}
8

Swift 3+

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

MKUserTrackingBarButtonItemを作成し、コンストラクターでMKMapviewを渡してから、そのボタン項目をナビゲーションメニュー(またはボタンがあるはずの場所)に追加する必要があります。

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