2014-09-19 51 views
0

我有兩個設備上的應用程序,一個在支持iOS7的設備上,另一個在支持iOS8的設備上。我的MKMapView不是以用戶在iOS8設備上的位置爲中心,而是在iOS7上。MKMapView不是以位置爲中心的iOS8

這是我的代碼,我要求在另一個屏幕上使用用戶位置。

-(void)viewDidLoad{ 

[LocationManager sharedInstance]; 
CLLocation * location = [[LocationManager sharedInstance] getCurrentLocation]; 
NSLog(@"Location %f %f",location.coordinate.latitude,location.coordinate.longitude); 
MKCoordinateRegion mapRegion; 
mapRegion.center = location.coordinate; 
mapRegion.span.latitudeDelta = 0.01; 
mapRegion.span.longitudeDelta = 0.01; 
NSLog(@"Map Region Lat %f",mapRegion.center.latitude); 
NSLog(@"Map Region Long %f ",mapRegion.center.longitude); 

self.getDirectionsMap.delegate = self; 
[self.getDirectionsMap setRegion:mapRegion animated: NO]; 
self.getDirectionsMap.showsUserLocation=YES; 
self.getDirectionsMap.showsPointsOfInterest=YES; 




} 

我的位置Manager對象的.m

+ (LocationManager *)sharedInstance { 
if (nil == kLocationManager) { 

    kLocationManager = [[LocationManager alloc] init]; 
} 

return kLocationManager; 
} 

-(CLLocation *)getCurrentLocation{ 
CLLocation *loc = [_locationManager location]; 

return loc; 
} 

- (id)init { 
    self = [super init]; 
    if (!self) return nil; 

    /* setup location manager */ 
    _locationManager = [[CLLocationManager alloc] init]; 
    [_locationManager setDelegate:self]; 

    //iOS8 check 
    if ([_locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) { 

     [_locationManager requestWhenInUseAuthorization]; 
    } 
    [_locationManager setDesiredAccuracy:kCLLocationAccuracyBest]; 
    [_locationManager setDistanceFilter:DISTANCE_FILTER]; 


    return self; 
} 

我的地圖顯示成功的用戶位置,但地圖不居中。我的位置也使用正確的座標正確記錄,這也匹配記錄的地圖區域lat和long。

回答

1

您viewDidLoad方法未檢查到實際上還有一個位置可供使用。如果你使用了CLLocationManager,你可以設置它,然後當它有一個實際的位置時它會調用委託的方法。我懷疑iOS設備花費更長時間才能獲得GPS讀數,並且它在viewDidLoad中給出nil

+0

你說的是有延誤是正確的。移動代碼以查看Will Appear的工作原理。 – DevC 2014-09-21 08:50:27

+0

即使'viewWillAppear'也不是正確的方法。您必須檢查是否確實存在位置,其他設備可能需要更長時間才能獲取位置修復,而不會讓您的視圖出現。 CLLocationManager及其委託方法更加可靠。 – Craig 2014-09-21 09:51:19

+0

我明白了!一旦收到位置,重新加載地圖視圖?你是這個意思嗎? – DevC 2014-09-21 13:15:06