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