簡體   English   中英

iOS設置圍繞錨點旋轉的MKMapView相機方向

[英]iOS set MKMapView camera heading rotation around anchor point

我有一個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:進行旋轉后,它仍然會將其視為從北方看,因此會轉到地圖的側面。

以編程方式旋轉地圖/調整地圖大小時,如何在地圖的底部中心保留特定點?

編輯:我想一個解決方案是將地圖的高度加倍,然后隱藏地圖的下半部分以使其不可見。 如何做到這一點?

首先,在Interface Builder中,將地圖視圖置於滾動視圖中。 然后在地圖視圖上將高度設置為1000。地圖視圖的中心將在屏幕底部。 這與視圖控制器上的零自動布局約束一起使用。

對我來說,關鍵是滾動視圖部分。 直到我添加了它,無論我在IB中將其設置為什么,我都無法獲得大於568的地圖視圖(盡管可以使用更大的寬度)。 我想滾動視圖會越過任何限制高度的因素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM