我在两台设备上安装了我的应用程序,一台在支持iOS7的设备上,另一台在启用iOS8的设备上。我的MKMapView不是以iOS8设备上的用户位置为中心,而是在iOS7上。
这是我的代码,我已经请求使用另一个屏幕上的用户位置。
-(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;
}
我的位置管理器对象.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相匹配。
您的viewDidLoad方法还没有检查是否存在要使用的位置。如果你使用CLLocationManager,你可以设置它,然后它会在有实际位置时调用委托的方法。我怀疑iOS设备需要更长的时间才能获得GPS读数,并且它会在viewDidLoad中为您提供nil
。