iOS установила поворот MKMapView на направление камеры вокруг точки привязки
У меня есть MKMapView, который я пытаюсь вращать вокруг нижнего центра себя. У меня есть простой метод, который получает заголовок магнитометра пользователя и меняет вид карты с камеры на заголовок, это прекрасно работает.
Моя проблема, однако, заключается в установке точки привязки на карте в широте / долготе, вокруг которой будет вращаться карта. С помощью этого метода я могу установить желаемую точку в нижней части моей карты:
-(void)setMapCenterFromLocation:(CLLocationCoordinate2D)location {
MKCoordinateRegion oldRegion = [self.mapView regionThatFits:MKCoordinateRegionMakeWithDistance(location, 10000, 10000)];
CLLocationCoordinate2D centerPointOfOldRegion = oldRegion.center;
CLLocationCoordinate2D centerPointOfNewRegion = CLLocationCoordinate2DMake(centerPointOfOldRegion.latitude + oldRegion.span.latitudeDelta / 2.0, centerPointOfOldRegion.longitude);
MKCoordinateRegion newRegion = MKCoordinateRegionMake(centerPointOfNewRegion, oldRegion.span);
[self.mapView setRegion:newRegion animated:YES];
}
И я могу повернуть карту с помощью:
- (void)magneticDirectionChanged:(NSNotification *)notification {
CLHeading *heading = (CLHeading *)[[notification userInfo] valueForKey:@"heading"];
CLLocationDirection newDirection = heading.trueHeading;
self.currentHeading = (int)newDirection;
[self.mapView.camera setHeading:self.currentHeading];
}
Но вращение происходит вокруг центра карты, а не нижней центральной точки, которую я хотел. Даже если я вызову setMapCenterFromLocation: после поворота он все равно будет считать, что он смотрит с севера, и поэтому он уходит по сторонам карты.
Как сохранить конкретную точку в нижнем центре карты при программном вращении карты или изменении ее размера?
Изменить: решение, я полагаю, было бы удвоить высоту карты, а затем скрыть нижнюю половину карты от видимого. Как это могло быть достигнуто?