【发布时间】: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