首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MKMapSnapshotter startWithCompletionHandler从未打过电话

MKMapSnapshotter startWithCompletionHandler从未打过电话
EN

Stack Overflow用户
提问于 2016-01-26 20:08:36
回答 2查看 921关注 0票数 2

为什么MKMapSnapshotter的startWithCompletionHandler方法上的完成处理程序不会被回调?(即使有错误也不会!)

我没有做任何花哨的事情,只是抓取快照并将其显示出来,全部在前台,没有后台处理。

不同寻常的是,它看起来完全是随机的,这意味着有时它工作得很好,而另一些时候却永远不会。

下面是我的代码:

代码语言:javascript
复制
MKMapSnapshotOptions *options = [[MKMapSnapshotOptions alloc] init];
options.size = somePredeterminedSize;
options.scale = [[UIScreen mainScreen] scale];
options.mapType = MKMapTypeStandard;
options.region = MKCoordinateRegionMakeWithDistance(mycoordinate, 1000, 1000);

MKMapSnapshotter *snapshotter = [[MKMapSnapshotter alloc] initWithOptions:options];
[snapshotter startWithCompletionHandler:^(MKMapSnapshot *snapshot, NSError *error) {
    if (error) {
        NSLog(@"[Error] %@", error);
        return;
    }

    MKAnnotationView *pin = [[MKPinAnnotationView alloc] initWithAnnotation:nil reuseIdentifier:nil];
    pin.image = [UIImage imageNamed:@"map-pin"];
    UIImage *image = snapshot.image;
    UIGraphicsBeginImageContextWithOptions(image.size, YES, image.scale);
    [image drawAtPoint:CGPointMake(0.0f, 0.0f)];
    CGRect rect = CGRectMake(0.0f, 0.0f, image.size.width, image.size.height);

    CGPoint point = [snapshot pointForCoordinate:self.bureau.coordinate];
    if (CGRectContainsPoint(rect, point)) {
        point.x = point.x + pin.centerOffset.x - (pin.bounds.size.width / 2.0f);
        point.y = point.y + pin.centerOffset.y - (pin.bounds.size.height / 2.0f);
        [pin.image drawAtPoint:point];
    }

    UIImage *compositeImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

}];

我同时在多台设备上进行了测试,每台设备都运行不同的iOS版本:运行iOS 8.4的iPhone 5S iPhone 6运行iOS 9.2的iPhone 6+运行iOS 8.2

所有3个设备都连接到相同的WIFI。iPhone 6+几乎从不会失败,而iPhone 6几乎总是会失败。

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2016-02-05 03:43:36

我也有同样的问题,在我的应用程序中,我有一个地址列表和一些地图图像,如果你按下图像,其中一个选项是在地图应用程序中打开它。在iPhone上,它完美地创建了图像,但在iPad上,它没有,直到我尝试在苹果的“地图”应用程序中打开地址(使用MKMapItem.openMapsWithItems ...),它打开地图应用程序,并呈现一个权限提示,我按下“允许”,回到我的应用程序,它开始完美地工作。

尝试打开地图应用程序,允许权限,并查看它是否在你的应用程序中工作。

希望能有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2016-06-02 22:31:01

我有时也有这样的经历。我的理论是,在这种情况下,“磁贴服务器”(或任何负责下载地图磁贴的守护进程)已经崩溃。(即使我使用的MKMapView实例也没有显示任何瓦片)

重启设备总是能帮我修复它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35013530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档