2014-10-14 12 views
6

Tôi gặp sự cố. Tôi đang sử dụng một số MKMapView để hiển thị một số chú thích. Tôi khởi tạo chế độ xem bản đồ với thu phóng mặc định. Và nó hiển thị một số bản đồ.Gạch MKMapView không được tải với thu phóng

enter image description here

nhưng khi tôi cố gắng phóng to, ngói không được nạp, và bản đồ trở nên trống rỗng. Như thế này.

enter image description here

Tôi tạo trình tạo giao diện xem qua bản đồ của mình.

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

Tôi đang làm gì sai? Có phương pháp bắt buộc nào để thực hiện, điều đó có ảnh hưởng đến chức năng này không? Và có, có một kết nối internet trên thiết bị của tôi.

+1

Bạn đã tìm thấy giải pháp chưa? – booker

Trả lời

1

Nói chung điều này có thể xảy ra do kết nối internet. Nếu bạn có kết nối internet chậm hơn cần có thời gian để tải các lát bản đồ.

Giới thiệu về các phương pháp tôi được khuyến nghị để ghi đè phương thức bên dưới.

Override phương pháp MKMapView đại biểu -

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

sẽ gọi mỗi khi bạn phóng to gạch/ra và bản đồ tải.

PS - cung cấp MKMapViewDelegate cho bộ điều khiển chế độ xem của bạn.

+2

Nhưng có kết nối internet và các lát không bao giờ được tải sau khi thu phóng. Tôi không hiểu tại sao. – BergP

+0

Đăng mã của bạn cách bạn tạo 'MKMapView, đại biểu nào bạn đang sử dụng. – Kampai

+0

Tôi không biết tại sao, nhưng nó hoạt động trên các thiết bị khác. Với cùng iOS 7. Tôi tạo nó với trình xây dựng giao diện và thiết lập đại biểu trong IB. – BergP

-3

Tôi đã gặp sự cố tải tương tự cho đến khi tôi gặp sự cố khi hoạt động bằng cách googling!

Note: Hiệu quả ios 8 & sau, chúng ta cần thêm một giá trị NSLocationWhenInUseUsageDescription trong Info.plist tập tin với giá trị riêng của chúng tôi như mô tả. Điều này là do tài sản showsUserLocation của **MKMapView** không hoạt động ngay lập tức. Thông tin thêm 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]; 
} 

Tôi tin chắc điều này sẽ mang lại kết quả mong đợi mà không bị lỗi, tức là MKMapView thu phóng đến vị trí người dùng hiện tại.

+1

Chỉ cho phép sử dụng vị trí nếu bạn muốn hiển thị vị trí của người dùng. Bạn không cần quyền vị trí của người dùng để hiển thị bản đồ. – nhgrif

Các vấn đề liên quan