Crear un MKMapSnapshotter con un MKPolylineRenderer

Pensé que iOS 7MKMapSnapshotters sería una manera simple de tomar una instantánea de unMKMapView, el beneficio es que puede hacerlo sin cargar el mapa a la vista. Aunque parece más trabajo agregar pines y superposiciones (debido a la necesidad de gráficos centrales). Los videos de la WWDC dan un muy buen ejemplo de cómo crear unMKMapSnapshotter con la adición de unMKAnnotationView.

Sin embargo, para alguien con poca experiencia en gráficos básicos, no es realmente obvio cómo se crea unMKMapSnapshotter desde unMKPolylineRenderer.

He intentado hacer esto, pero el camino es inexacto. Dibuja aproximadamente el 10% de la línea con precisión, pero luego dibuja el resto del camino en línea recta.

Aquí está mi código:

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();
            }
}];

¿Alguien tiene un buen ejemplo viable sobre cómo hacer esto, por favor?

Respuestas a la pregunta(1)

Su respuesta a la pregunta