2

我正在使用 Mapbox iOS SDK (2.1.2),我想创建地图视图的快照。我可以看到使用 1.xx 版本的 iOS SDK 可以做到这一点,但我在当前 API 中看不到任何方法。我搜索了 Mapbox Github 存储库,但没有看到任何内容。我还在他们的支持页面上发了一条消息,但我没有收到回复。

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

4

2 回答 2

8

更新答案:适用于 iOS 3.7.0+ 的 Mapbox Maps SDK 包括MGLMapSnapshotter,它将为您提供没有地图视图的栅格化地图 - 有关基本实现,请参阅此示例

为了后代,旧答案保留在下面...


目前还没有快照方法MGLMapView但正在计划中。

同时,这些将为您提供地图视图(并且仅该地图视图)的内容,包括基本地图和地图 UI:

目标-C

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

    return snapshot;
}

斯威夫特

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

    return snapshot
}

地图快照

于 2016-03-01T16:57:36.117 回答
0

您可以编写自己的实现来捕获地图视图的内容,而不是在 Mapbox API 中寻找方法。你可以试试这个。

-(UIImage*)mapToImage{
    UIGraphicsBeginImageContext(mapView.bounds.size);
    [mapView.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *mapImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return mapImage;
}
于 2015-11-03T17:33:29.233 回答