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。
你說的是有延誤是正確的。移動代碼以查看Will Appear的工作原理。 – DevC 2014-09-21 08:50:27
即使'viewWillAppear'也不是正確的方法。您必須檢查是否確實存在位置,其他設備可能需要更長時間才能獲取位置修復,而不會讓您的視圖出現。 CLLocationManager及其委託方法更加可靠。 – Craig 2014-09-21 09:51:19
我明白了!一旦收到位置,重新加載地圖視圖?你是這個意思嗎? – DevC 2014-09-21 13:15:06