iOS设置MKMapView摄像头标题围绕锚点旋转

我有一个MKMapView,我试图围绕自己的底部中心旋转。 我有一个简单的方法,获取用户磁力计标题并将地图的摄像机视图更改为标题,这很好。

我的问题是在地图上以lat / long设置锚点,地图将围绕它旋转。 我可以使用此方法将我想要的点设置为地图的底部:

-(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:在进行旋转之后,它仍然将其视为从北方看,因此它会移到地图的两侧。

如何以编程方式旋转地图/调整地图大小,如何在地图底部中心保留特定点?

编辑:我认为一个解决方案是将地图的高度加倍,然后隐藏地图的下半部分,使其不可见。 怎么可以实现呢?

首先,在Interface Builder中,将地图视图粘贴在滚动视图中。 然后将地图视图上的高度设置为1000.地图视图的中心将位于屏幕的底部。 这适用于视图控制器上的零自动布局约束。

对我来说关键是滚动视图部分。 直到我添加它,我无法获得高于568的地图视图(尽管更大的宽度工作),无论我在IB中设置它。 我想滚动视图强制超过限制高度的任何东西。