MKMapView不以iOS8的位置为中心

时间:2014-09-19 16:07:58

标签: mkmapview ios8 mkcoordinateregion

我的应用程序位于两个设备上,一个在支持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匹配。

1 个答案:

答案 0 :(得分:1)

您的viewDidLoad方法尚未检查是否确实存在要使用的位置。如果您使用了CLLocationManager,则可以设置它,然后在具有实际位置时调用委托的方法。我怀疑iOS设备需要更长时间才能获得GPS阅读,并且它在viewDidLoad中为您提供nil