Перейти к функции / zoom to current location (MapKit)
у меня есть mapView, который приближается к текущему местоположению с помощью viewDidLoad
:
#define METERS_PER_MILE 1609.344
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[super viewDidLoad];
mapView.showsUserLocation=TRUE;
// zoom to a specific area
CLLocationCoordinate2D zoomLocation;
zoomLocation.latitude = -28.994167;
zoomLocation.longitude = 134.866944;
MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, 1900*METERS_PER_MILE, 1900*METERS_PER_MILE);
MKCoordinateRegion adjustedRegion = [mapView regionThatFits:viewRegion];
// make sure the Google water mark is always visible
mapView.autoresizingMask =
(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
[mapView setRegion:adjustedRegion animated:YES];
mapView.delegate=self;
searchBar.delegate = self;
}
это прекрасно работает. Я добавил строку поиска и функцию для перехода к определенному местоположению адреса. Это тоже прекрасно работает. Теперь я хочу добавить кнопку, чтобы вернуться к текущему местоположению. Вы можете мне помочь, пожалуйста?
Ура
5 ответов
вам нужно установить центр вашей карты в текущее местоположение при нажатии этой кнопки. Скажи вот так:--2-->
- (IBAction)showCurrentLocation {
[mapView setCenterCoordinate:mapView.userLocation.location.coordinate animated:YES];
}
вы можете связать это IBAction с вашим UIButton, он будет перемещать карту по текущему местоположению и увеличивать ее.
@IBOutlet weak var mapView: MKMapView!
@IBAction func zoomToUserCurrentLocation(sender: AnyObject) {
if self.mapView != nil {
self.mapView.setRegion(MKCoordinateRegionMake(
self.mapView.userLocation.coordinate,
MKCoordinateSpanMake(0.1, 0.1)
), animated: true)
}
}
MKCoordinateSpan определяет область, охватываемую областью карты, меньше эти значения, ближе вы масштабируете карту.
- (void)showCurrentLocation{
MKMapPoint annotationPoint = MKMapPointForCoordinate(self.mapView.userLocation.coordinate);
MKMapRect zoomRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.0, 0.0);
[self.mapView setVisibleMapRect:zoomRect animated:YES];
}
ДЛЯ SWIFT
добавить эту строку в действие кнопки yourMKMapView.setUserTrackingMode(.follow, animated: true)
убедитесь, что вы добавить yourMKMapView.showsUserLocation = true
на viewDidLoad()