2015-11-03 129 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)处呈现,但没有任何矢量图形切片出现。 –