2013-02-20 34 views
0

下面的代碼是我一直用來放大用戶位置的方法,但是一旦用戶移動地圖,就會阻止它不斷地重新縮放。這種方法的問題在於,當它嚮應用中的用戶位置數據請求權限時,我選擇是,它不會執行任何操作。我必須離開頁面並返回,然後才能正確放大。iOS6 iPhone應用程序 - 如何只縮放到userLocation一次?

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ 
    if ([self.mapView showsUserLocation]) 
    { 
     MKCoordinateRegion region; 
     region.center = self.mapView.userLocation.coordinate; 

     MKCoordinateSpan span; 
     span.latitudeDelta = .50; // Change these values to change the zoom 
     span.longitudeDelta = .50; 
     region.span = span; 

     [self.mapView setRegion:region animated:YES]; 

     self.mapView.showsUserLocation = NO;} 
} 

上面的方法應該監視用戶位置的變化,然後設置一旦找到它的位置。然後,我在if語句中設置一個條件使其停止 - 否則當您移動地圖時,它會一直移回userlocation。

回答

1

在聽起來像self.mapView.showsUserLocation設置爲FALSE當彈出窗口出現,因爲它不知道用戶的位置。爲了解決這個問題,我建議只使用你自己的變量。在這個類中創建一個全局布爾值並使用它來代替self.mapView.showsUserLocation。另外,確保這個函數實際上在用戶同意彈出窗口後被調用。你是否NSLogging?

相關問題