【发布时间】:2016-09-12 09:14:29
【问题描述】:
我有一个MKMapView,我需要在上面显示两种类型的叠加层。一个是平铺覆盖,我使用MKOverlayView 和MKCircleRenderer 的子类。
我的方法是:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay 但现在我还需要渲染 MKCircle 我收到以下编译器错误:
'从结果类型为'MKOverlayView * _Nonnull'的函数返回'MKCircleRenderer *'的不兼容指针类型。
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
if ([overlay isKindOfClass:[MKCircle class]]) {
MKCircleRenderer *circleView = [[MKCircleRenderer alloc] initWithOverlay:overlay];
circleView.strokeColor = [UIColor redColor];
circleView.fillColor = [[UIColor redColor] colorWithAlphaComponent:0.4];
return circleView;
} else {
TileOverlayView *view = [[TileOverlayView alloc] initWithOverlay:overlay];
view.tileAlpha = 1.0;
return view;
}
}
这是我的代码,我知道 initWithOverlay 已被弃用,我正在将其作为另一个问题处理。
【问题讨论】:
-
您能否将您的平铺视图设为
MKOverlayRenderer而不是叠加视图?然后你可以实现rendererForOverlay而不是viewForOverlay然后你可以从一个方法中返回两个渲染器。 -
帮助很大!谢谢@Rob!我刚刚让我的
TileOverlayView成为MKOverlayRenderer的子类,一切都很好!如果您想提交作为答案,我可以接受:)
标签: ios xcode mkmapview mkoverlay mkcircle