2015-01-21 2 views
3

создать новые оверлеи, как это:Почему MKCircle не отображается на MKMapView iOS8

MKCircle *circle = [MKCircle circleWithCenterCoordinate:region.coordinate radius:region.radius]; 
[self.mapView addOverlay:circle]; 

также я реализовал метод делегата:

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay { 
    MKCircleRenderer *circleRenderer = [[MKCircleRenderer alloc] init]; 
    circleRenderer.fillColor = [UIColor greenColor]; 
    circleRenderer.alpha = 1.f; 
    return circleRenderer; 
} 

обе части кода называются, MAPview = ноль в этот момент, это набор делегатов, , но я не вижу круг на моей карте.

Что я делаю неправильно?

ответ

3

Вместо init позвоните по телефону MKCircleRendererinitWithCircle.

Очевидно, убедитесь, что установлен вид отображения delegate, что ваш код, который добавляет оверлей и который создает экземпляр рендеринга, называется вообще и т. Д., Но initWithCircle является вероятным виновником.

7

В соответствии с предложением @Rob вам необходимо связаться с initMKCircleRenderer другим способом initWithCircle.

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay { 
    MKCircleRenderer *circleRenderer = [[MKCircleRenderer alloc] initWithCircle:overlay]; 
    circleRenderer.fillColor = [UIColor greenColor]; 
    circleRenderer.alpha = 1.f; 
    return circleRenderer; 
} 

Также убедитесь, что расстояние забора достаточно, чтобы видеть круг на карте.

Например:

CLLocationDistance fenceDistance = 100000; 
MKCircle *circle = [MKCircle circleWithCenterCoordinate:region.coordinate radius:fenceDistance]; 
[self.mapView addOverlay:circle];