簡體   English   中英

具有核心數據NSManagedObject子類的CCHMapClusterController

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM