MKMapView не сосредоточен на местоположении iOS8

У меня есть приложение на двух устройствах: одно на устройстве с поддержкой 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;




}

Объект My Location 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;
 }

Моя карта успешно показывает положение пользователя, но карта не центрирована. Мое местоположение также регистрируется правильно с правильными координатами, и это также соответствует зарегистрированному региону карты широту и долготу.

1 ответ

Решение

Ваш метод viewDidLoad еще не проверил, есть ли еще место для использования. Если бы вы использовали CLLocationManager, вы могли бы установить его работу, а затем он вызвал бы методы делегата, когда у него есть фактическое местоположение. Я подозреваю, что устройству iOS требуется больше времени, чтобы получить показания GPS, и это дает вам nil в viewDidLoad.

Другие вопросы по тегам