我正在使用Mapbox iOS SDK(2.1.2),我想创建mapview的快照。我可以看到iOS SDK的1.x.x版本可以实现这一点,但我没有在当前的API中看到任何方法。我搜索了Mapbox Github回购,但我没有看到任何东西。我也在他们的支持页面上留言,但我没有收到回复。
如果API中尚不存在合适的方法,有人可以提出解决方法吗?或者有人可以建议我自己在哪里开始添加功能?
答案 0 :(得分:7)
更新回答:适用于iOS 3.7.0+的Mapbox Maps SDK包括MGLMapSnapshotter
,它可以为您提供没有地图视图的栅格化地图 - 请参阅this example了解基本知识实施
为了后代的缘故,旧答案保留在下面......
MGLMapView
中还没有快照方法,but one is planned。
与此同时,这些将为您提供地图视图的内容(仅限该地图视图),包括基本地图和地图用户界面:
<强>目标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
}
答案 1 :(得分:0)
您可以编写自己的实现来捕获mapview的内容,而不是在Mapbox API中查找方法。你可以尝试一下。
-(UIImage*)mapToImage{
UIGraphicsBeginImageContext(mapView.bounds.size);
[mapView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *mapImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return mapImage;
}