MKMapOverlayView 用に作成した CGContext に対して、いくつかの CG 描画操作を実行しています。コンテキストに描画した後、画像を作成し、MapKit が提供するコンテキストに貼り付けます。
- (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);
}
イメージを作成せずに単純にコピーする方法はありmyContext
ますか?context
「MapKit が提供するコンテキストに直接描画してみませんか」という方もいらっしゃると思います。残念ながら、context
直接レンダリングするときに描画の不具合が発生しています。Apple は現在この問題を調査していますが、それまでの間、回避策を講じる必要があります。上に示したこの回避策は、私の「ベスト」ショットですが、少し遅いです。
PSここでも答えを探しているので、報奨金を開始しました。具体的には、OS Xをターゲットにしています。したがって、答えはそこで機能するはずです。OPはiOSでの答えを探していました。