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

时间:2014-01-30 10:00:41

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

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

编辑:我认为解决方案是将地图的高度加倍,然后隐藏地图的下半部分。怎么能实现呢?

1 个答案:

答案 0 :(得分:2)

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

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