如何将UIImageView添加到MKOverlayRenderer?

时间:2013-10-20 01:55:11

标签: iphone ios objective-c mkmapview mapkit

既然他们在MKOverlayView中没有更多的视图,并且它被称为MKOverlayRenderer,我怎么能在我的MKMapView中添加UIImageView?注意:我知道如何通过将图像绘制到CGContextRef上来将图像添加到地图上,但我特别要求添加UIImageView。谢谢!

2 个答案:

答案 0 :(得分:2)

以下是添加UIImage的方法。如果您想添加UIImageView,那么Apple文档会说明(Apple Doc MKOverlayRenderer):

  

建议您使用Core Graphics为其绘制任何内容   你的叠加层。如果您选择使用UIKit类和方法绘制   相反,您必须将指定的图形上下文推送到上下文中   在做任何之前堆栈(使用UIGraphicsPushContext函数)   画电话。完成绘图后,必须同样弹出   使用UIGraphicsPopContext从堆栈中删除图形上下文。覆盖   绘图通常发生在后台线程上以提高性能,   所以不要操纵UIKit视图或只能是其他对象   在应用程序的主线程上进行操作。

#import <Foundation/Foundation.h>

@import MapKit;

@interface MyOverlayRenderer : MKOverlayRenderer

@end

实施

#import "MyOverlayRenderer.h"

@implementation MyOverlayRenderer

- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context {
    UIImage *image = [UIImage imageNamed:@"indigo_eiffel_blog.png"];
    CGImageRef imageReference = image.CGImage;

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

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

    CGContextDrawImage(context, theRect, imageReference);
}

@end

答案 1 :(得分:-1)

如果您正在使用视图,则可能应该将子视图添加到MKAnnotationView