2014-10-14 2 views
6

У меня проблема. Я использую MKMapView для отображения некоторых аннотаций. Я инициализирую отображение карты с масштабированием по умолчанию. И он отображает некоторую карту.Плиты MKMapView не загружены с увеличением

enter image description here

но при попытке масштабирования, плитки не загружены, и карта становится пустой. Как это.

enter image description here

Я создаю мой взгляд карты через интерфейс строитель.

@property (nonatomic, weak) IBOutlet MKMapView* mapView; 

Что я делаю неправильно? Существуют ли какие-либо обязательные методы реализации, которые влияют на этот функционал? И да, на моем устройстве есть подключение к Интернету.

+1

Вы нашли решение? – booker

ответ

1

Обычно это может произойти из-за подключения к Интернету. Если у вас медленное подключение к Интернету, требуется время для загрузки фрагментов карты.

О методах, которые я рекомендовал переопределить ниже.

Override метод MKMapView делегат -

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated 

Позвоню каждый раз, когда вы увеличиваете, и карты/нагрузки плитки.

PS - предоставить MKMapViewDelegate вашему контроллеру.

+2

Доступно подключение к интернету, и плитки никогда не загружаются после масштабирования. Я не понимаю, почему. – BergP

+0

Опубликуйте свой код, как Как создать 'MKMapView, какие делегаты вы используете. – Kampai

+0

Я не знаю почему, но он работает на других устройствах. С тем же iOS 7. Я создаю его с помощью построителя интерфейса и устанавливаю делегат в IB. – BergP

-3

У меня была такая же проблема с загрузкой, пока у меня не возникла проблема с работой с помощью googling!

Примечание: Эффективное ИОС 8 & позже, нам нужно добавить значение NSLocationWhenInUseUsageDescription в Info.plist файл с собственным значением в описании. Это связано с тем, что showsUserLocation Недвижимость **MKMapView** не работает сразу. Больше информации here !!!!

//This should be declared in .h file 
@property(nonatomic, strong) CLLocationManager *locationManager; 


- (void)viewDidLoad { 
    self.mapView.showsUserLocation = YES; 
    self.mapView.delegate = self; 
    self.locationManager.delegate = self; 
    self.locationManager = [[CLLocationManager alloc] init]; 
    self.locationManager.distanceFilter = kCLDistanceFilterNone; 
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 

#ifdef __IPHONE_8_0 
    if(IS_OS_8_OR_LATER) { 
     [self.locationManager requestWhenInUseAuthorization]; 
    } 
#endif 
    [self.locationManager startUpdatingLocation]; 
    self.locationManager.distanceFilter = kCLDistanceFilterNone; 
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
} 

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { 
    if (status == kCLAuthorizationStatusAuthorizedAlways || status == kCLAuthorizationStatusAuthorizedWhenInUse) { 
     self.mapView.showsUserLocation = YES; 
    } 
} 

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 
{ 
    MKCoordinateRegion region; 
    region.center = self.locationView.userLocation.coordinate; 

    MKCoordinateSpan span; 
    span.latitudeDelta = 0.015; ->Adjust this value to zoom as per your requirement 
    span.longitudeDelta = 0.015; 
    region.span = span; 

    [self.mapView setRegion:region animated:YES]; 
} 

Я твердо считаю, что это даст ожидаемый результат без сбоев, то есть MKMapView масштабирование к текущему местоположению пользователя.

+1

Использование разрешения местоположения необходимо только в том случае, если вы хотите показать местоположение пользователя. Для отображения карт вам не требуется разрешение местоположения пользователя. – nhgrif