为什么 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];
我像这样创建新的叠加层:
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];