2012-07-30 185 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