iOS 未调用 MKMapView viewForOverlay

iOS MKMapView viewForOverlay not called

我快疯了。为什么这不起作用? update_map 方法被调用但 viewForOverlay 没有被调用。

- (void)viewDidLoad {
    [super viewDidLoad];

    if(mapView2 != nil)
    {
        [self update_map];
    }

- (void)update_map
{
    CLLocationDistance fenceDistance = 100000;

    MKCircle *circle = [MKCircle circleWithCenterCoordinate:newCoord radius:fenceDistance];
    [mapView2 addOverlay:circle];
}

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay
{
    NSLog(@"circle overlay");
    MKCircleView *circleView = [[MKCircleView alloc initWithOverlay:overlay];
    [circleView setFillColor:[UIColor blueColor]];
    [circleView setAlpha:0.1f];
    return circleView;
}

确保您的视图控制器支持 <RKMapViewDelegate> 协议,并且 mapView2 实例的 delegate 属性 设置为您的视图控制器,在 .xib 中或以编程方式如下:

- (void)viewDidLoad 
{
   [super viewDidLoad];

   self.mapView2.delegate = self;
}