2014-08-31 3 views
0

나는 200 개의 핀을 표시하기 위해 MKMapView를 사용하는 응용 프로그램을 가지고 있습니다. 핀의 데이터가 Core Data에서 나오고 Core Data 객체의 NSManagedObject에 Objective-C 범주가 있습니다. 하위 클래스를 MKAnnotation으로 확장하면 핵심 데이터의 가져온 객체 배열을 맵보기에 직접 추가 할 수 있습니다. 문제는 핀이 서로 가깝기 때문에 CCHMapClusterController을 사용하기 시작했고 핀 객체가 더 이상 카테고리가 아니며 CCHMapClusterAnnotation 객체로 변환된다는 것입니다. 이전에 내 viewForAnnotation에서 핀에서 NSManagedObject 하위 클래스 (위치)를 가져 왔지만 더 이상 핀 객체가 Location 객체가 아니기 때문에 더 이상이 작업을 수행 할 수 없습니다. 이들은 CCHMapClusterObjects입니다. 여기에 내 옛날 viewForAnnotation은 다음과 같습니다CCHMapClusterController 핵심 데이터 NSManagedObject 하위 클래스

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:  (id<MKAnnotation>)annotation { 
static NSString *reuseID = @"EAnnotation"; 
MKAnnotationView *view = [mapView dequeueReusableAnnotationViewWithIdentifier:reuseID]; 
if ([annotation isKindOfClass:[Location class]]) { 

if (!view) { 
    view = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseID]; 
    view.canShowCallout = YES; 

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 46, 46)]; 

    Location *location = (Location *)annotation; 

    [imageView setImage:location.smallpic]; 

    view.leftCalloutAccessoryView = imageView; 

    view.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 

    } 

    } 

    return view; 
} 

내 질문은, 어떻게 당신이지도에있는 모든 방법으로 확대하는 경우에 도청되고있는 위치 개체를 얻을 수있다? 나는 핀이 오브젝트 유형이 아닌 줌인 된 경우를 이해하지만 어느 정도 줌 인하면 어떤 탭 객체에 액세스 할 수 있어야합니다.

답변

0

CCHMapClusterAnnotation에는 annotations이라는 속성이 있습니다. 여기에는 annotations이라는 특수 효과 개체 배열이 포함되어 있습니다 (사례의 핵심 데이터 개체).

클러스터의 주석 수에 따라 다른 핀 아이콘을 표시하려면 this example을 참조하십시오. 아이디어는 클러스터에 대해 하나의 맞춤 주석보기를 사용하고 주석보기 내부에 표시 할 아이콘을 결정한다는 것입니다.

참고 : 저는 CCHMapClusterController의 작성자입니다. 궁금한 점이 더 있으시면 언제든지 저에게 연락하십시오.

관련 문제