3

现在,由于它们不再是 MKOverlayView 中的视图,并且它被称为 MKOverlayRenderer,我如何将 UIImageView 添加到我的 MKMapView 中?注意:我知道如何通过将图像绘制到 CGContextRef 上来将图像添加到地图上,但我特别需要添加 UIImageView。谢谢!

4

2 回答 2

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
于 2013-12-03T16:25:40.173 回答
-1

如果您使用的是视图,则可能应该将子视图添加到MKAnnotationView.

于 2013-10-21T17:45:01.493 回答