1

ポイント名に基づいてマップに2つの画像を表示しようとしています。

@interface MyAnnotationClass : NSObject <MKAnnotation> {
    NSString *_name;
    NSString *_description;
    CLLocationCoordinate2D _coordinate;


}
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *description;
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

-(id) initWithCoordinate:(CLLocationCoordinate2D) coordinate;

ViewDidLoad メソッド コード:

mapView.delegate = self;
    //Initialize annotation
    MyAnnotationClass *commuterLotAnnotation=[[MyAnnotationClass alloc] initWithCoordinate:CLLocationCoordinate2DMake( 39.047752, -76.850388)];
    commuterLotAnnotation.name = @"1";
    MyAnnotationClass *overflowLotAnnotation=[[MyAnnotationClass alloc] initWithCoordinate:CLLocationCoordinate2DMake(  39.047958, -76.852520)];
    overflowLotAnnotation.name = @"2";

    //Add them to array
    self.myAnnotations=[NSArray arrayWithObjects:commuterLotAnnotation, overflowLotAnnotation, nil];

    //Release the annotations now that they've been added to the array
    [commuterLotAnnotation release];
    [overflowLotAnnotation release];

    //add array of annotations to map
    [mapView addAnnotations:_myAnnotations];

viewForAnnotation コード:

-(MKAnnotationView *)mapView:(MKMapView *)MapView viewForAnnotation:(id<MKAnnotation>)annotation{
    static NSString *parkingAnnotationIdentifier=@"ParkingAnnotationIdentifier";

    if([annotation isKindOfClass:[MyAnnotationClass class]]){

        //Try to get an unused annotation, similar to uitableviewcells
        MKAnnotationView *annotationView=[MapView dequeueReusableAnnotationViewWithIdentifier:parkingAnnotationIdentifier];
        //If one isn't available, create a new one
        if(!annotationView){
            annotationView=[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:parkingAnnotationIdentifier];
           /* if(imgCount == 0){
                annotationView.image=[UIImage imageNamed:@"passenger.png"];
                imgCount = 1;
            }
            else if(imgCount == 1){
                annotationView.image=[UIImage imageNamed:@"place.png"];
                imgCount = 0;
            }*/
           // if([((MyAnnotationClass)annotation).name isEqualToString: @"1"])
            // code to show image
        }
        return annotationView;
    }
    return nil;
}

ここで、viewForAnnotation の MyAnnotationClass の name メンバーにアクセスして、ポイントのベースでポイントとイメージを決定したいと考えています。例 if([((MyAnnotationClass)annotation).name isEqualToString: @"1"])

しかし、それは機能せず、 ((MyAnnotationClass)annotation) で例外を表示します

助けてください。

4

1 に答える 1

3

これ([((MyAnnotationClass)annotation).name isEqualToString: @"1"])はする必要があります([((MyAnnotationClass *)annotation).name isEqualToString: @"1"])。MyAnnotationClass へのポインター (*) にキャストする必要があります。

于 2012-05-17T10:00:07.337 に答える