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;
}
我快疯了。为什么这不起作用? 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;
}