【发布时间】:2014-02-22 13:28:43
【问题描述】:
我有一个 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: 进行旋转后,它仍然将其视为从北方看,因此它会移到地图的两侧。
如何在以编程方式旋转地图/调整地图大小时将特定点保持在地图底部中心?
编辑:我想一个解决方案是将地图的高度加倍,然后隐藏地图的下半部分不可见。这怎么可能实现?
【问题讨论】: