Почему 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 != nil на данный момент, это Делегатский набор, но я не вижу круга на своей карте.

Что я делаю не так?

2 3

2 ответа:

Вместо init вызовите метод MKCircleRenderer initWithCircle.

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

Согласно предложению @Rob вам нужно init MKCircleRenderer используя другой метод 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];