我正在使用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)處呈現,但沒有任何矢量圖形切片出現。 –