我创建了这样的新叠加层:
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,那时,它的代理集, 但我在地图上看不到圆圈。
我做错了什么?
答案 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
可能是罪魁祸首。