为什么MKCircle不会显示在MKMapView iOS8上

时间:2015-01-21 11:08:04

标签: ios iphone mkmapview mapkit

我创建了这样的新叠加层:

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 个答案:

答案 0 :(得分:7)

根据@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];

答案 1 :(得分:3)

而不是init,请调用MKCircleRenderer方法initWithCircle

显然,请确保设置地图视图的delegate,添加覆盖的代码和实例化渲染器的代码完全被调用等,但initWithCircle可能是罪魁祸首。