0

注釈をタップしたときに注釈のインデックスを取得したい地図アプリケーションを開発しています。私は以下を使用して同じことを達成しようとしています:

    -(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view{

        MKPointAnnotation *point = view.annotation;

        NSLog(@"%@",point.title);

        NSLog(@"%d",indexOfTheObject);
}

しかし、それは常に私に乱数を返します。

didSelectAnnotationViewデリゲートは のように機能すると想定していdidSelectRowAtIndexPathます。

私が間違っているところを修正してください。

どんな助けもかなりのものです。

ありがとう。

4

4 に答える 4

1
 - (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
    // Annotation is your custom class that holds information about the annotation
    if ([view.annotation isKindOfClass:[Annotation class]]) {
        Annotation *annot = view.annotation;
        NSInteger index = [self.arrayOfAnnotations indexOfObject:annot];
    }
  }
于 2013-06-24T06:30:48.080 に答える
0

最初にピンをロードするとき、後で識別するために各ピンのタグを設定する必要があります。

       int count=0;
            for(NSDictionary *dict in self.mapArray)
            {
                CLLocationCoordinate2D coord= CLLocationCoordinate2DMake([[dict objectForKey:@"latitude"] doubleValue], [[dict objectForKey:@"longitude"] doubleValue]);
                [self loadAnnotationWithLocation:coord tag:count];
         count++;
            }

    #pragma mark-map delegates
    -(void)loadAnnotationWithLocation:(CLLocationCoordinate2D)centerLocation tag:(NSInteger)annotationTag
    {
        MyAnnotation *ann = [[MyAnnotation alloc] initWithCoordinate:centerLocation];
        ann.ann_tag = annotationTag;
        [self.map addAnnotation:ann];
        [ann release];
        ann=nil;
    }

    -(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
    {
        if (view.annotation)
        {
            MyAnnotation *myAnnotation  = (MyAnnotation *)view.annotation;
            if((id <MKAnnotation>)myAnnotation !=self.map.userLocation)
            {
              NSDictionary *dict=[self.mapArray objectAtIndex:myAnnotation.ann_tag];
//do rest of the work here with different pin respect to their tag
            }
        }
    }

問題があればお知らせください!!!

于 2013-06-24T07:23:01.210 に答える
0

このコードを使用します。mapView.annotations探している配列です。

  - (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
            Annotation *annot = view.annotation;
            NSInteger indexOfTheObject = [mapView.annotations indexOfObject:annot];
            NSLog(@"%d",indexOfTheObject); 
            NSLog(@"%@",point.title);
      }
于 2013-06-24T06:33:49.260 に答える
0
NSUInteger index = [mapView.annotations indexOfObject:view.annotation];

このコード行を使用して、現在のインデックスを取得できます

于 2015-04-13T08:15:07.663 に答える