我认为 iOS 7 的MKMapSnapshotter
s 将是一种简单的方式来拍摄 s 的快照MKMapView
,好处是您可以在不将地图加载到视图中的情况下做到这一点。尽管添加引脚和覆盖似乎需要更多工作(因为需要核心图形)。WWDC 视频提供了一个很好的例子来创建一个MKMapSnapshotter
添加一个MKAnnotationView
.
但是,对于没有太多核心图形经验的人来说,如何MKMapSnapshotter
从MKPolylineRenderer
.
我试图这样做,但路径不准确。它准确地绘制了大约 10% 的线,但随后将路径的其余部分绘制为直线。
这是我的代码:
MKMapSnapshotter *snapshotter = [[MKMapSnapshotter alloc] initWithOptions:snapshotOptions];
[snapshotter startWithQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
completionHandler:^(MKMapSnapshot *snapshot, NSError *error)
{
if (error == nil)
{
UIImage *mapSnapshot = [snapshot image];
UIGraphicsBeginImageContextWithOptions(mapSnapshot.size,
YES,
mapSnapshot.scale);
[mapSnapshot drawAtPoint:CGPointMake(0.0f, 0.0f)];
CGContextRef context = UIGraphicsGetCurrentContext();
//Draw the points from the MKPolylineRenderer in core graphics for mapsnapshotter...
MKPolylineRenderer *overlay = (MKPolylineRenderer *)[self.mapView rendererForOverlay:[_mapView.overlays lastObject]];
if (overlay.path)
{
CGFloat zoomScale = 3.0;
[overlay applyStrokePropertiesToContext:context
atZoomScale:zoomScale];
CGContextAddPath(context, overlay.path);
CGContextSetLineJoin(context, kCGLineJoinRound);
CGContextSetLineCap(context, kCGLineCapRound);
CGContextStrokePath(context);
}
UIImage *pathImage = UIGraphicsGetImageFromCurrentImageContext();
[map addMapIcon:pathImage];
UIGraphicsEndImageContext();
}
}];
请问有没有人有一个很好的可行的例子来说明如何做到这一点?