2014-01-30 57 views
1

我有一個MKMapView,我試圖圍繞自己的底部中心旋轉。我有一個簡單的方法來獲取用戶的磁強計標題,並將地圖的相機視圖更改爲標題,這很好。iOS設置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:在執行旋轉之後,它仍然將其視爲從北向看,因此它會轉到地圖的邊上。

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

編輯:我認爲解決方法是將地圖高度加倍,然後隱藏地圖的底部半部使其不可見。這怎麼可能完成?

回答

2

首先,在界面生成器中,將地圖視圖粘貼在滾動視圖中。然後將地圖視圖上的高度設置爲1000.地圖視圖的中心將位於屏幕的底部。這與視圖控制器上的零自動佈局約束一起工作。

我的關鍵是滾動視圖部分。直到我添加它,我無法得到地圖視圖繪製高於568(儘管更大的寬度工作),無論我設置在IB中。我想滾動視圖強制過去任何限制高度。

+0

這是很長一段時間,但剛剛回來。是的,無論你告訴它做什麼,mapview都不會畫出568的高度。我只想澄清答案,並說如果將MapView添加到具有所需高度的ScrollView,則MapView將按預期繪製。 – shiznatix

+0

試圖找出這個3小時後,這救了我的生命!愛它! –