두 가지 오버레이 유형을 표시해야하는 MKMapView
이 있습니다. 하나는 MKOverlayView
및 MKCircleRenderer
하위 클래스를 사용하는 바둑판 식 오버레이입니다. - (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
하지만 지금 난의 컴파일러 오류 받고 있어요 또한 MKCircle
렌더링해야합니다 :viewForOverlay를 사용하여 MKOverlayView를 반환하지만 동일한 메서드에서 MKCircleRenderer를 반환해야합니다.
내 방법은 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' 뷰로 만들 수 있습니까? 그런 다음'viewForOverlay'보다는'rendererForOverlay'를 구현할 수 있습니다. 그러면 하나의 메소드에서 두 렌더러를 모두 반환 할 수 있습니다. – Rob
큰 도움이됩니다! 고마워요 @!! 방금'TileOverlayView'를'MKOverlayRenderer'의 서브 클래스로 만들었습니다. 답변으로 제출하려면 받아 들일 수 있습니다 :) – LeanneGamble