在 iOS 上创建 Mapbox 地图视图的快照?
Create a snapshot of the Mapbox mapview on iOS?
我正在使用 Mapbox iOS SDK (2.1.2),我想创建地图视图的快照。我可以使用 iOS SDK 的 1.x.x 版本查看在哪里可以使用此功能,但我在当前 API 中看不到任何方法。我搜索了 Mapbox Github 存储库,但我没有在那里看到任何东西。我还在他们的支持页面上留言,但没有收到回复。
如果 API 中还没有合适的方法,有人可以建议解决方法吗?或者有人可以建议我从哪里开始自己添加功能?
您可以编写自己的实现来捕获 mapview 的内容,而不是在 Mapbox 中寻找方法 API。你可以试试这个。
-(UIImage*)mapToImage{
UIGraphicsBeginImageContext(mapView.bounds.size);
[mapView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *mapImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return mapImage;
}
更新的答案: iOS 3.7.0+ 的 Mapbox Maps SDK 包括 MGLMapSnapshotter
, which will get you a rasterized map without a map view — see this example 的基本实现。
旧答案保留在下面,为了后代...
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;
}
Swift:
func snapshot(view: UIView) -> UIImage {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, true, 0)
view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
let snapshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return snapshot
}
我正在使用 Mapbox iOS SDK (2.1.2),我想创建地图视图的快照。我可以使用 iOS SDK 的 1.x.x 版本查看在哪里可以使用此功能,但我在当前 API 中看不到任何方法。我搜索了 Mapbox Github 存储库,但我没有在那里看到任何东西。我还在他们的支持页面上留言,但没有收到回复。
如果 API 中还没有合适的方法,有人可以建议解决方法吗?或者有人可以建议我从哪里开始自己添加功能?
您可以编写自己的实现来捕获 mapview 的内容,而不是在 Mapbox 中寻找方法 API。你可以试试这个。
-(UIImage*)mapToImage{
UIGraphicsBeginImageContext(mapView.bounds.size);
[mapView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *mapImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return mapImage;
}
更新的答案: iOS 3.7.0+ 的 Mapbox Maps SDK 包括 MGLMapSnapshotter
, which will get you a rasterized map without a map view — see this example 的基本实现。
旧答案保留在下面,为了后代...
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;
}
Swift:
func snapshot(view: UIView) -> UIImage {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, true, 0)
view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
let snapshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return snapshot
}