我有一個MKMapView
,我需要顯示兩種類型的覆蓋。一種是平鋪覆蓋圖,我使用MKOverlayView
和MKCircleRenderer
的子類。使用viewForOverlay返回一個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
偉大的幫助!謝謝@Rob!我只是將我的'TileOverlayView'作爲'MKOverlayRenderer'的一個子類,它的效果非常好!如果你想提交作爲答案,我可以接受它:) – LeanneGamble