2012-07-30 150 views
0

我正确地将MapView连接到我的代理上。此外,用户位置确实显示在地图上,但应该显示在同一位置的MKCircle不会这样做。它在某个时候起作用,但不知何故停止工作。这是我的一些代码。MKCircle覆盖图未在MapView上绘制

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
     locationManager = [[CLLocationManager alloc] init]; 
     [locationManager setDelegate:self]; 
     [locationManager setDesiredAccuracy:kCLLocationAccuracyBest]; 
     [locationManager startUpdatingLocation]; 
} 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    userLocation = newLocation; 
    MKCircle *circle = [MKCircle circleWithCenterCoordinate:userLocation.coordinate radius:500]; 
    circle.title = @"Nearby sites"; 
    [worldView addOverlay:circle]; 
} 
+1

是locationManager的一个属性? didUpdateToLocation被调用了吗?你是否实现了viewForOverlay委托方法? – Anna 2012-07-30 12:21:18

+0

嗨,locationManager是一个伊娃。 didUpdateToLocation被调用。而且我还没有实现viewForOverlay委托方法,根据文档,这似乎不需要。 – ratsimihah 2012-07-30 16:35:38

+0

所以我让我的ivar属性,并实现了viewForOverlay方法。而且还没有出现。于是我用一种颜色填充覆盖层,这种颜色很有用,让我意识到我的覆盖层实际上正在绘制,但是看不见。你可以写你的评论作为答案,我会标记你是正确的答案。 – ratsimihah 2012-07-30 16:46:29

回答

1

使用注释,该viewForAnnotation委托方法并不需要实现和地图视图将绘制默认红色针。

但是对于叠加层,您必须实现viewForOverlay委托方法。
地图视图不提供默认叠加视图。

+0

我明白了。现在我明白它必须实现,因为叠加层默认不包含任何绘图,所以它们看起来是不可见的。万分感谢! – ratsimihah 2012-07-30 17:21:09