2015-11-03 130 views
1

我正在使用Mapbox iOS SDK(2.1.2),我想創建mapview的快照。我可以看到使用iOS SDK的1.x.x版本可能會出現這種情況,但在當前API中看不到任何方法。我搜索了Mapbox Github回購,但我沒有看到任何東西。我也在他們的支持頁面上放了一條消息,但我沒有聽到。在iOS上創建Mapbox mapview的快照?

如果一個合適的方法還不存在於API中,有人可以提出一種解決方法嗎?或者有人會建議我自己開始添加功能的位置?

回答

6

更新答案: 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 
} 

Map snapshot

0

不用在Mapbox API中查找方法,您可以編寫自己的實現來捕獲mapview的內容。你可以試試這個。

-(UIImage*)mapToImage{ 
    UIGraphicsBeginImageContext(mapView.bounds.size); 
    [mapView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *mapImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return mapImage; 
} 
+1

此代碼生成帶有Mapbox註釋和info按鈕的圖像,兩者均在位置(0,0)處呈現,但沒有任何矢量圖形切片出現。 –