MKOverlayRenderer - 动画

时间:2014-08-25 14:20:47

标签: ios objective-c mkmapview mkoverlay

我正在使用MKOverlayRenderer和此代码在地图上渲染UIImage

- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context
{
    if (_overlayImage == nil)
    {
        return;
    }
    if (_overlayImage == (id)[NSNull null])
    {
        return;
    }


    CGImageRef imageReference = _overlayImage.CGImage;

    MKMapRect theMapRect = self.overlay.boundingMapRect;
    CGRect theRect = [self rectForMapRect:theMapRect];

    //CGContextSetInterpolationQuality(context, kCGInterpolationNone);
    CGContextSetInterpolationQuality(context, self.interpolation);

    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextTranslateCTM(context, 0.0, -theRect.size.height);
    CGContextDrawImage(context, theRect, imageReference);
}

我还有自定义类实现协议MKOverlay。此类包含图像列表并设置了渲染器。我在map delagate中设置了这个

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
{
    if ([overlay isMemberOfClass:[MyMapOverlay class]])
    {
        MyMapOverlay * myOverlay = (MyMapOverlay *)overlay;

        MyMapOverlayRenderer *overlayView = [[MyMapOverlayRenderer alloc] initWithOverlay:overlay overlayImage:myOverlay.activeImage transparency:125];

        [myOverlay SetRenderer:overlayView];

        return overlayView;
    }
}

现在我在覆盖中更改activeImage并调用

[_renderer setNeedsDisplay];

一切正常 - 图像已经改变。但它很慢,动画很迟钝:(

有什么想法吗?

0 个答案:

没有答案