在iOS上创建Mapbox mapview的快照?

Wil*_*ith 1 ios mapbox mapbox-gl

我正在使用Mapbox iOS SDK(2.1.2),我想创建mapview的快照.我可以看到iOS SDK的1.xx版本可以实现这一点,但我没有在当前的API中看到任何方法.我搜索了Mapbox Github回购,但我没有看到任何东西.我也在他们的支持页面上留言,但我没有收到回复.

如果API中尚不存在合适的方法,有人可以提出解决方法吗?或者有人可以建议我自己开始添加功能的地方?

fri*_*nny 7

更新的答案: Mapbox Maps SDK for iOS 3.7.0+包含MGLMapSnapshotter,它将为您提供没有地图视图的栅格化地图 - 请参阅此示例以获取基本实现.

为了后代,老答案保持在下面......


目前还没有快照方法MGLMapView,但计划中有一种方法.

在此期间,这些将获取地图视图的内容(并且只有该地图视图),包括基本地图和地图UI:

Objective-C:

- (UIImage *)snapshot:(UIView *)view {
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0);
    [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];
    UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return snapshot;
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特:

func snapshot(view: UIView) -> UIImage {
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, true, 0)
    view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
    let snapshot = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return snapshot
}
Run Code Online (Sandbox Code Playgroud)

映射快照