Почему 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 ответа:
Вместо
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];