MKMapOverlayView用に作成したCGContextにCG描画操作を実行しています。コンテキストに描画した後、イメージを作成し、MapKitが提供したコンテキストに貼り付けます。CGContextを別の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);
}
画像を生成することなく、単にcontext
にmyContext
をコピーする方法はありますか?
私は、「MapKitが提供するコンテキストに直接描画するのはなぜ」と言う人もいると思います。残念ながら、context
に直接描画すると描画グリッチが発生します。 Appleは現在この問題を調査中ですが、その間に回避策を講ずる必要があります。私が上に示したこの回避策は私の「ベスト」ショットですが、それは少し遅いです。
P.S.私はここでも答えを探しているので、私は賞金を始めました。具体的には、OS Xをターゲットにしているので、答えはそこで動作するはずです。 OPはiOSで答えを探していました。
問題の適切な解決策を見つけましたか?私は今、同じ問題に直面しています... – Georg
残念ながら、「CGFloat」は64ビットのiOSデバイスでは「ダブル」であるにもかかわらず、大きな整数と大きな部分はまだ十分なジッタを導入しますマップタイルには非常に小さな変更がレンダリングされます。 –