我对为什么使用示例代码不起作用的猜测:您没有将视图控制器连接为地图视图的委托。这样做的第一步是确保控制器实现 MKMapViewDelegate 协议,如下所示(在其头文件中):
#import <MapKit/MapKit.h>
@interface MyViewController : UIViewController <MKMapViewDelegate>
如果您从 XIB 设置视图控制器,请按住 Ctrl 键从地图视图拖动到您的控制器实例并将其连接为地图视图的delegate
出口。如果您在代码中设置它,请调用theMapView.delegate = self;
您的-loadView
或-viewDidLoad
.
然后,在某个时候(-viewDidLoad
例如,在你的 中),
[theMapView addOverlay:[MKCircle circleWithCenterCoordinate:someCoordinate radius:someRadius]];
…将导致地图视图调用其委托的-mapView:viewForOverlay:
方法,您可以实现如下内容:
-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
MKCircleView *circleView = [[MKCircleView alloc] initWithCircle:(MKCircle *)overlay];
circleView.fillColor = [UIColor blueColor];
return [circleView autorelease];
}