如何:在MKMapView上显示MKOverlay

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

我正在关注苹果“ 位置感知编程指南”中的示例 ,并且不会显示覆盖图。 任何帮助将不胜感激,这是我所做的第一个iPhone应用程序,所以我可能会错过简单的东西。

NavViewController.h

#import <UIKit/UIKit.h> #import <MapKit/MapKit.h> @interface NavViewController : UIViewController <MKMapViewDelegate> { } @property (weak, nonatomic) IBOutlet MKMapView *mapView; @end 

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]; } 

故事板:

故事板

任何编码build议将不胜感激。 谢谢!

确保将mapView的delegate设置为视图控制器实例(在这种情况下也许是File's owner )。

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

对于故事板,连接到视图控制器图标而不是文件的所有者。

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay by return nil; 尝试添加else之前。

 - (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; } else return nil; } 

你解决了你的问题吗? 只需从代表(在屏幕截图中)旁边的圆圈拖到名称为圆圈的圆圈中。在检查器中有一个设置,可以让您显示您所在的位置。 你做了需要中心地图说viewDidLoad所以它显示在科罗拉多州..