【问题标题】:CCHMapClusterController with Core Data NSManagedObject Subclass具有核心数据 NSManagedObject 子类的 CCHMapClusterController
【发布时间】:2014-08-31 19:50:45
【问题描述】:

我有一个应用程序,我在其中使用 MKMapView 来显示 200 个引脚。来自引脚的数据来自 Core Data,我在 Core Data 对象的 NSManagedObject 子类上有一个 Objective-C 类别,将它们扩展到 MKAnnotation 所以我可以直接将从 Core Data 获取的对象数组添加到地图视图中。问题是,因为引脚彼此如此接近,我开始使用CCHMapClusterController 并且引脚对象不再是类别,它们被转换为 CCHMapClusterAnnotation 对象。我之前在 viewForAnnotation 中只是从 pin 中获取 NSManagedObject 子类(Location),但我不能再这样做了,因为 pin 对象不再是 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 对象?我知道当您缩小时,引脚不是对象类型 Location 但是当我一直放大时,我应该能够访问我正在点击的 Location 对象。

【问题讨论】:

    标签: ios xcode core-data mapkit


    【解决方案1】:

    CCHMapClusterAnnotation 有一个名为annotations 的属性,其中包含此集群中的注释对象数组(在您的情况下为核心数据对象)。

    如果您想根据集群中的注释数量显示不同的图钉图标,请参阅this example。这个想法是您为集群使用一个自定义注释视图,并在注释视图内决定要显示什么图标。

    注意:我是CCHMapClusterController 的作者——如果您有更多问题,请随时与我联系。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多