2014-06-05 3 views
1

난 내가 자기에 mapkit하는 주석과 setdelegate을 추가 할 때 내가뛰어난 동작은

같은 지역을 설정할 때이 방법은 called.But되지

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation (id<MKAnnotation>)annotation 
{ 
MKAnnotationView *annotationView=[mapView viewForAnnotation:annotation]; 
return annotationView; 
} 

MapKit 위임에서 특별한 문제가 발생 해요

MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(coordinate, 7.5*1609.344 ,7.5*1609.344); 
[productsMapView setRegion:viewRegion animated:YES]; 

다음 위임 방법은 전화 했어요이 당신은 프레임 워크가 작동하는 방식을 고려할 필요가 happening.Some 하나 도움

+0

나는 대답이 없지만 게시 한 메서드가 잘못된 것입니다. 'MKAnnotationView * annotaionView = [mapView viewForAnnotation : annotation]; 올바른 – Volker

+0

mapView 인스턴스 메소드 대신 [mapView dequeueReusableAnnotationViewWithIdentifier : @ "productAnnotation"];을 사용할 수 있습니다. 그러나 결과는 같습니다. – user3710452

+0

당신의 진짜 질문 또는 문제는 무엇입니까? viewForAnnotation이 호출되는 시점을 파악하려고하는 이유는 무엇입니까? – Anna

답변

1

이유를 잘 모릅니다이다. 프레임 워크는 주석을 그리려고 할 때

  1. viewForAnnotation 방법은 호출된다.
  2. 프레임 워크는 해당 주석을 포함하는 위치가 표시 될 때만 주석을 그립니다.

그래서 (어노테이션을 포함하는) 영역으로보기를 설정하면 프레임 워크는 viewForAnnotation을 호출합니다. (당신은 viewForAnnotation 메서드 구현에서 논리적 인 오류가 있습니다.)

+0

논리적 인 오류가 무엇입니까? 내 의심 지역은 그 주위에 지역을 설정할 때만 그려지 는가? 답장을 보내 주셔서 감사합니다 – user3710452

+0

viewForAnnotation 메서드에서 viewForAnnotation 메서드를 호출하고 있습니다. 재귀가 아니라 dequeueReusableAnnotationViewWithIdentifier를 사용해야합니다. . – Zee