在Objective C中显示MapKit“地图加载错误”

Posted

技术标签:

【中文标题】在Objective C中显示MapKit“地图加载错误”【英文标题】:Showing MapKit "Map loading error" in Objective C 【发布时间】:2015-05-27 07:51:18 【问题描述】:

我正在使用目标 c 使用 Mapkit,我想在地图上显示“错误警报”。 当互联网工作时,它工作正常,但当互联网工作不正常时,它会自动显示在日志“请求超时”而不调用“ma​​pViewDidFailLoadingMap”委托方法。

代码在这里:

- (void)viewDidLoad 

    [super viewDidLoad];
    // Do any additional setup after loading the view.

    mapView.delegate=self;
    mapView.showsUserLocation = YES;
    [mapView setMapType:MKMapTypeStandard];
    [mapView setZoomEnabled:YES];
    [mapView setScrollEnabled:YES];

    //[self activeCLLocation];


-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation

    NSLog(@"user latitude==>%f",userLocation.location.coordinate.latitude);
    NSLog(@"user longitude==>%f",userLocation.location.coordinate.longitude);



-(void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error

    NSLog(@"error map===>%@",error.description);


-(void)mapView:(MKMapView *)mapView didFailToLocateUserWithError:(NSError *)error

    NSLog(@"error loc===>%@",error.description);

显示错误:

2015-05-27 12:51:57.624 EventLocator[1262:160081] 无法确定 当前国家代码:Error Domain=NSURLErrorDomain Code=-1001 "The 请求超时。” UserInfo=0x19d80290 NSErrorFailingURLStringKey=http://gsp1.apple.com/pep/gcc, NSErrorFailingURLKey=http://gsp1.apple.com/pep/gcc, NSLocalizedDescription=请求超时。, NSUnderlyingError=0x17e877a0 "请求超时。"

【问题讨论】:

【参考方案1】:

我会在您加载 mapKit 之前测试有效的互联网连接。查看此线程以了解如何执行此操作。

How to check for an active Internet connection on ios or OSX?

【讨论】:

【参考方案2】:

代码中没有问题。我猜模拟器内部无法连接到互联网。在加载 MapView 之前尝试连接到其他一些 wifi 连接并测试互联网连接。

检查互联网连接为:

#import <SystemConfiguration/SCNetworkReachability.h>


+(bool)isNetworkAvailable

   SCNetworkReachabilityFlags flags;
   SCNetworkReachabilityRef address;
   address = SCNetworkReachabilityCreateWithName(NULL, "www.apple.com" );
   Boolean success = SCNetworkReachabilityGetFlags(address, &flags);
   CFRelease(address);

bool canReach = success
                && !(flags & kSCNetworkReachabilityFlagsConnectionRequired)
                && (flags & kSCNetworkReachabilityFlagsReachable);

   return canReach;

您也可以尝试将模拟器重置为

iOS 模拟器 -> 重置内容和设置

【讨论】:

谢谢哥们,我知道 SCNetworkReachability 但为什么“mapViewDidFailLoadingMap”委托不起作用? 您的加载位置失败,您收到此网络错误。如果它获得位置,那么将尝试在地图上加载。如果在地图上加载位置失败,它将进入“mapViewDidFailLoadingMap”。

以上是关于在Objective C中显示MapKit“地图加载错误”的主要内容,如果未能解决你的问题,请参考以下文章

我的 Swift MapKit 注释没有显示

在 mapkit 中显示自定义注释

UItableview行未在swift4中显示mapkit

在 Swift 游乐场中使用 MapKit 显示地图以快速查看?

MapKit 地图 - 注释未显示在模拟器上

如何在Objective c中显示UICollectionView的水平滚动?