我正在使用 Mapbox iOS SDK (2.1.2),我想创建地图视图的快照。我可以看到使用 1.xx 版本的 iOS SDK 可以做到这一点,但我在当前 API 中看不到任何方法。我搜索了 Mapbox Github 存储库,但没有看到任何内容。我还在他们的支持页面上发了一条消息,但我没有收到回复。
如果 API 中尚不存在合适的方法,有人可以提出解决方法吗?或者有人可以建议我从哪里开始自己添加功能?
更新答案:适用于 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
}
您可以编写自己的实现来捕获地图视图的内容,而不是在 Mapbox API 中寻找方法。你可以试试这个。
-(UIImage*)mapToImage{
UIGraphicsBeginImageContext(mapView.bounds.size);
[mapView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *mapImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return mapImage;
}