【问题标题】:iOS set MKMapView camera heading rotation around anchor pointiOS设置MKMapView相机航向围绕锚点旋转
【发布时间】: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: 进行旋转后,它仍然将其视为从北方看,因此它会移到地图的两侧。

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

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

【问题讨论】:

    标签: ios mkmapview


    【解决方案1】:

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

    对我来说关键是滚动视图部分。在我添加它之前,无论我在 IB 中将它设置为什么,我都无法让地图视图绘制高于 568(尽管更大的宽度有效)。我猜滚动视图会强制超出限制高度的因素。

    【讨论】:

    • 这是一个很长的时间,但刚刚回来。是的,无论您告诉它做什么,mapview 都不会超过 568 高度。我只是想澄清答案,并说如果您将 MapView 添加到具有所需高度的 ScrollView 中,那么 MapView 将按预期绘制。
    猜你喜欢
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 2010-09-22
    • 1970-01-01
    • 2012-08-15
    • 2014-11-01
    • 1970-01-01
    相关资源
    最近更新 更多