2015-02-08 2 views
0

Я теряю рассудок здесь. Почему это не работает? Метод update_map вызывается, но viewForOverlay этого не делает.iOS MKMapView 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; 
} 
+0

Вид карты посылает сообщения его делегату относительно загрузки картографических данных и изменений в отображаемой части карты. Мне интересно, если вы установили делегат? – ldindu

+0

убедитесь, что mapView не равен нулю, а делегат установлен –

ответ

0

Убедитесь, что контроллер представления поддерживает протокол <RKMapViewDelegate>delegate и свойство для mapView2 экземпляра устанавливается на ваш контроллер представления, либо в .xib или программно следующим образом:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.mapView2.delegate = self; 
} 
+0

Спасибо, он сделал трюк. – raki

Смежные вопросы