我通过子类化 MKPolygonView 并覆盖 drawMapRect:zoomScale:inContext:-方法在 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 并通过调用实例CGImage
获得UIImage
(也在initWithOverlay:
)
我的 MKMapView 第一次在地图上绘制图像需要 8-14 秒,在放大以重新绘制具有更好分辨率的图块时又需要大约相同的时间。这似乎真的很长,我想知道我是否在做任何根本错误的事情,因为这是我第一次使用 MapKit。