为什么 MKCircle 没有显示在 MKMapView 上 iOS8

Why MKCircle is not displayed on 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,是delegate set, 但是我在地图上看不到圆圈。

我做错了什么?

而不是 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];