使用 viewForOverlay return 一个 MKOverlayView 但我还需要 return 一个 MKCircleRenderer 在相同的方法
Using viewForOverlay to return an MKOverlayView but I also need to return an MKCircleRenderer in the same method
我有一个 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
已被弃用,我正在处理另一个问题。
问题是图块视图显然是 MKOverlayView
的子类(return 由 viewForOverlay
编辑),而 MKCircleRenderer
是更现代的 [=12] 的子类=],MKOverlayRenderer
的子类(return 由 rendererForOverlay
编辑),而不是 MKOverlayView
.
的子类
我建议您可以将平铺视图设为 MKOverlayRenderer
子类而不是叠加视图。这样,您可以实现 rendererForOverlay
和 return 圆形渲染器或平铺渲染器,而不是 viewForOverlay
。
我有一个 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
已被弃用,我正在处理另一个问题。
问题是图块视图显然是 MKOverlayView
的子类(return 由 viewForOverlay
编辑),而 MKCircleRenderer
是更现代的 [=12] 的子类=],MKOverlayRenderer
的子类(return 由 rendererForOverlay
编辑),而不是 MKOverlayView
.
我建议您可以将平铺视图设为 MKOverlayRenderer
子类而不是叠加视图。这样,您可以实现 rendererForOverlay
和 return 圆形渲染器或平铺渲染器,而不是 viewForOverlay
。