我正在使用Mapbox iOS SDK(2.1.2),我想创建mapview的快照。我可以看到使用iOS SDK的1.x.x版本可能会出现这种情况,但在当前API中看不到任何方法。我搜索了Mapbox Github回购,但我没有看到任何东西。我也在他们的支持页面上放了一条消息,但我没有听到。在iOS上创建Mapbox mapview的快照?
如果一个合适的方法还不存在于API中,有人可以提出一种解决方法吗?或者有人会建议我自己开始添加功能的位置?
我正在使用Mapbox iOS SDK(2.1.2),我想创建mapview的快照。我可以看到使用iOS SDK的1.x.x版本可能会出现这种情况,但在当前API中看不到任何方法。我搜索了Mapbox Github回购,但我没有看到任何东西。我也在他们的支持页面上放了一条消息,但我没有听到。在iOS上创建Mapbox mapview的快照?
如果一个合适的方法还不存在于API中,有人可以提出一种解决方法吗?或者有人会建议我自己开始添加功能的位置?
更新答案: Mapbox地图SDK的iOS 3.7.0+包括MGLMapSnapshotter
,这将让你一个光栅化地图,而地图视图 - 见的基本实现。
老回答下面不停,为子孙后代着想...
没有在MGLMapView
快照方法呢,but one is planned。
在此期间,这些都会让你在地图视图的内容(并且只有地图视图),包括基本的地图和地图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;
}
斯威夫特:
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中查找方法,您可以编写自己的实现来捕获mapview的内容。你可以试试这个。
-(UIImage*)mapToImage{
UIGraphicsBeginImageContext(mapView.bounds.size);
[mapView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *mapImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return mapImage;
}
此代码生成带有Mapbox注释和info按钮的图像,两者均在位置(0,0)处呈现,但没有任何矢量图形切片出现。 –