[英]CCHMapClusterController with Core Data NSManagedObject Subclass
我有一個應用程序,其中使用MKMapView顯示200個插針。插針中的數據來自Core Data,並且Core Data對象的NSManagedObject子類上有一個Objective-C類別,將它們擴展為MKAnnotation,因此我可以直接將核心數據中提取的對象數組添加到地圖視圖中。 問題是,由於引腳之間的距離非常近,因此我開始使用CCHMapClusterController ,並且引腳對象不再是類別,它們被轉換為CCHMapClusterAnnotation對象。 我以前在viewForAnnotation中只是從引腳上獲取NSManagedObject子類(位置),但由於引腳對象不再是Location對象,它們不再是Location對象,而是CCHMapClusterObjects,因此我無法再執行此操作。 這是我的舊viewForAnnotation:
- (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;
}
我的問題是,在地圖上一直放大時,如何獲取正在點擊哪個Location對象? 我知道當您縮小引腳時,它們不是“位置”對象類型,但是當我一直放大時,我應該能夠訪問正在點擊的“位置”對象。
CCHMapClusterAnnotation
具有一個稱為annotations
的屬性,該屬性包含此群集中您的注釋對象的數組(在您的情況下為Core Data對象)。
如果要根據群集中的注釋數量顯示其他圖釘圖標,請參見此示例 。 這個想法是,您對集群使用一個自定義注釋視圖,並且在注釋視圖內部,決定要顯示的圖標。
注意:我是CCHMapClusterController的作者-如果您有更多問題,請隨時與我聯系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.