如何:在MKMapView上显示MKOverlay

nsl*_*cum 6 mapkit ios mkoverlay ios5

我需要在地图上显示MKOverlay,但无法让它实际显示.

我正在关注Apple的位置感知编程指南中示例,并且不会显示叠加层.任何帮助将不胜感激,这是我制作的第一个iPhone应用程序,所以我可能会遗漏一些简单的东西.

NavViewController.h

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>

@interface NavViewController : UIViewController <MKMapViewDelegate> {
}
@property (weak, nonatomic) IBOutlet MKMapView *mapView;

@end
Run Code Online (Sandbox Code Playgroud)

NavViewController.m

#import "MSUNavViewController.h"
#import <CoreLocation/CoreLocation.h>

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
    if ([overlay isKindOfClass:[MKPolygon class]])
    {
        MKPolygonView* aView = [[MKPolygonView alloc] initWithPolygon:(MKPolygon*)overlay];

        aView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:0.2];
        aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.7];
        aView.lineWidth = 3;

        return aView;
    }
    return nil;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Define an overlay that covers Colorado.
    CLLocationCoordinate2D  points[4];

    points[0] = CLLocationCoordinate2DMake(41.000512, -109.050116);
    points[1] = CLLocationCoordinate2DMake(41.002371, -102.052066);
    points[2] = CLLocationCoordinate2DMake(36.993076, -102.041981);
    points[3] = CLLocationCoordinate2DMake(36.99892, -109.045267);

    MKPolygon* poly = [MKPolygon polygonWithCoordinates:points count:4];
    poly.title = @"Colorado";

    [_mapView addOverlay:poly];
}
Run Code Online (Sandbox Code Playgroud)

故事板:

故事板

任何编码建议将不胜感激.谢谢!

Zha*_*Chn 7

确保将mapView设置delegate为视图控制器实例(可能File's owner在这种情况下).

在界面构建器中,右键单击地图视图,从委托右侧的空心圆拖动到左侧窗格中"占位符"部分的"文件"的"所有者"图标.

对于storyboard,请连接到View Controller图标而不是File的所有者.