Objective c mkoverlayrender在地图视图上显示UIImage

Objective c mkoverlayrender在地图视图上显示UIImage,objective-c,ios7,uiimage,mapkit,Objective C,Ios7,Uiimage,Mapkit,我正在尝试在iOS 7的地图视图上显示图像 I子类MKOVERAYRENDER如下: MapOverlayrender.h #import <Foundation/Foundation.h> @import MapKit; @interface MapOverlayRenderer : MKOverlayRenderer @end 我的视图控制器中包含以下内容,其中包含地图视图: ViewController.m #import "ViewController.h" #impo

我正在尝试在iOS 7的地图视图上显示图像

I子类MKOVERAYRENDER如下:

MapOverlayrender.h

#import <Foundation/Foundation.h>
@import MapKit;

@interface MapOverlayRenderer : MKOverlayRenderer

@end
我的视图控制器中包含以下内容,其中包含地图视图:

ViewController.m

#import "ViewController.h"
#import "MapOverlayRenderer.h"
@import MapKit;

@interface ViewController () <MKMapViewDelegate>

@property (weak,nonatomic) IBOutlet MKMapView *mapView;

@end

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    [self.mapView setDelegate:self];
}

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay {

    MapOverlayRenderer *mapOverlay = [[MapOverlayRenderer alloc] init];
    return mapOverlay;
}

- (IBAction)showSeattle:(id)sender {

    CLLocationCoordinate2D location = {47.61167908,-122.33325958};
    int radius = 100000; //radius in meters
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(location, radius, radius);
    [self.mapView setRegion:[self.mapView regionThatFits:region] animated:YES];
}

@end
#导入“ViewController.h”
#导入“MapOverlayRenderer.h”
@导入地图套件;
@界面视图控制器()
@属性(弱,非原子)IBMMapView*mapView;
@结束
@实现视图控制器
-(无效)viewDidLoad{
[超级视图下载];
[self.mapView setDelegate:self];
}
-(MKOverlayRenderer*)地图视图:(MKMapView*)地图视图渲染器ForOverlay:(id)overlay{
MapOverlayRenderer*mapOverlay=[[MapOverlayRenderer alloc]init];
返回地图覆盖;
}
-(iAction)showSeattle:(id)发件人{
CLLocationCoordinate2D位置={47.61167908,-122.33325958};
int radius=100000;//半径(米)
mkcoordinaereregion=mkcoordinaereregionmakewithdistance(位置、半径、半径);
[self.mapView setRegion:[self.mapView regionatfits:region]已设置动画:是];
}
@结束
当调用
iAction
将地图缩放到某个位置时,我看不到地图视图顶部的图像


如何在iOS 7中使用
mkoverlayrender
在地图视图顶部显示图像

有几个问题:

  • 通过调用
    addOverlay
    ,代码在哪里实际向地图添加覆盖?您需要创建一个类型为
    id
    的对象,并在
    addOverlay
    调用中传递它。您可以创建一个实现
    MKOverlay
    的自定义类,但在本例中,您可以使用
    MKCircle
    来表示图像的位置和大小。在
    showsettle:
    方法中:

    CLLocationCoordinate2D location = {47.61167908,-122.33325958};
    int radius = 100000; //radius in meters
    
    MKCircle *c = [MKCircle circleWithCenterCoordinate:location radius:radius];
    [self.mapView addOverlay:c];
    
    MKCoordinateRegion region = ...
    
  • rendererForOverlay
    中,代码正在创建
    MapOverlayRenderer
    的实例,但未向其提供对基础
    overlay
    模型对象的引用。调用
    initWithOverlay

    MapOverlayRenderer *mapOverlay 
        = [[MapOverlayRenderer alloc] initWithOverlay:overlay];
    


  • 顺便说一下,使用注释可以更轻松地将图像放置在该位置(但图像不会像基于覆盖的图像那样随缩放级别缩放)。不确定要使用哪种功能。

    可以使用类似矩形的多边形来代替圆形覆盖吗?可以,提供MapOverlayRenderer所需数据的任何覆盖类型都可以。我使用MKCircle是因为它最容易创建。另外,请参阅我的另一个与
    mkoverlayrender
    MapOverlayRenderer *mapOverlay 
        = [[MapOverlayRenderer alloc] initWithOverlay:overlay];