IOSアプリケーションでMKMapViewを使用しています。ビューに検索バーがあります。地図上で場所を検索すると、その検索場所に注釈が付けられます。問題は、現在の場所に戻りたいということです。私はグーグルマップアプリケーションを見ました、彼らはユーザーを現在の場所に送る地図上に1つのボタンを持っています。
そのボタンを表示する方法は?そして、そのボタンのクリックイベントを取得する方法は?.
- (void)viewDidLoad
{
[super viewDidLoad];
MKUserTrackingBarButtonItem *buttonItem = [[MKUserTrackingBarButtonItem alloc] initWithMapView:self.map];
self.navigationItem.rightBarButtonItem = buttonItem;
}
ソリューション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];
}
Swift 3+
let buttonItem = MKUserTrackingBarButtonItem(mapView: mapView)
self.navigationItem.rightBarButtonItem = buttonItem
MKUserTrackingBarButtonItem
を作成し、コンストラクターでMKMapview
を渡してから、そのボタン項目をナビゲーションメニュー(またはボタンがあるはずの場所)に追加する必要があります。
(void) viewDidLoad
{
[super viewDidLoad];
MKUserTrackingBarButtonItem *buttonItem = [[MKUserTrackingBarButtonItem alloc] initWithMapView:self.map];
self.navigationItem.rightBarButtonItem = buttonItem;
}