Estoy realizando algunas operaciones de dibujo CG en un CGContext que creé para MKMapOverlayView. Después de dibujar en mi contexto, creo una imagen y la pego en el contexto proporcionado por MapKit.Copie CGContext en otro CGContext
- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context {
CGColorSpaceRef colorRef = CGColorSpaceCreateDeviceRGB();
CGContextRef myContext = CGBitmapContextCreate(NULL, kTileSize, kTileSize, 8, 0, colorRef, kCGImageAlphaPremultipliedLast);
CGColorSpaceRelease(colorRef);
CGContextSetAllowsAntialiasing(myContext, TRUE);
//...cut out drawing operations...
CGImageRef image = CGBitmapContextCreateImage(myContext);
CGContextDrawImage(context, [self rectForMapRect:mapRect], image);
CGImageRelease(image);
CGContextRelease(myContext);
}
¿Hay una manera de simplemente copiar myContext
en context
sin tener que crear una imagen?
Me doy cuenta de que algunos de ustedes dirán "¿por qué no dibujar directamente en el contexto que proporciona MapKit?". Lamentablemente, estamos experimentando un problema de dibujo al representar directamente en context
. Apple actualmente está investigando este problema para nosotros, pero mientras tanto tenemos que encontrar una solución. Esta solución que presenté arriba es mi "mejor" oportunidad, pero está un poco lenta.
P.S. He comenzado una recompensa ya que estoy buscando una respuesta aquí también. Específicamente me estoy enfocando en OS X. Entonces la respuesta debería funcionar allí. El OP estaba buscando una respuesta en iOS.
¿Encontró una solución adecuada para el problema? Me enfrento al mismo problema en este momento ... – Georg
Desafortunadamente, no ... a pesar de que 'CGFloat' es un' doble' en dispositivos iOS de 64 bits, el gran número entero y la fracción aún mayor aún presentan suficiente jitter cuando haciendo cambios muy pequeños al mosaico del mapa. –