0

MKPolygonView をサブクラス化し、次のように drawMapRect:zoomScale:inContext:-method をオーバーライドすることにより、MKMapView にイメージ (2.5 MB、PNG イメージ データ、1240 x 1240、8 ビット/カラー RGBA、非インターレース) を描画しています。

-(void) drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context {

CGRect theRect           = [self rectForMapRect:overlayRect];
CGRect clipRect     = [self rectForMapRect:mapRect];


CGContextClipToRect(context, clipRect);

CGContextDrawImage(context, theRect, imageReference);

}

overlayRectマップ上の画像の位置とサイズをMKMapRect定義します (ハード コードされ、 で初期化されますinitWithOverlay:) imageReference。画像への参照を保持し、UIImage にロードされCGImageUIImageインスタンスを呼び出すことによって取得されます (これも でinitWithOverlay:) 。

私の MKMapView は、最初にマップに画像を描画するのに 8 ~ 14 秒かかり、ズームインしてタイルをより良い解像度で再描画するときもほぼ同じ時間かかります。それは本当に長いようで、MapKit を初めて使用するので、何か根本的に間違っているのではないかと思っています。

4

1 に答える 1

1

タイル イメージを使用して、パフォーマンスを向上させることができます。Apple は WWDC 2010 でこの手法を使用しました。例はhttps://github.com/klokantech/Apple-WWDC10-TileMapで確認できます。

このブログでもプロセスを説明しています: http://shawnsbits.com/blog/2010/12/23/mapkit-overlays-session-1-overlay-map/

于 2012-05-01T10:24:36.860 に答える