在地图中点击引脚时正确的引脚索引

时间:2013-06-24 06:15:31

标签: ios mkmapview mkannotation

我正在开发一个地图应用程序,我希望在点击注释时获取索引。我正在努力实现同样的目的:

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

        MKPointAnnotation *point = view.annotation;

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

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

但它总是给我一个随机数。

我假设didSelectAnnotationView代表的工作方式与didSelectRowAtIndexPath类似。

纠正我错误的地方。

任何帮助都会很明显。

感谢。

4 个答案:

答案 0 :(得分: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];
    }
  }

答案 1 :(得分: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);
      }

答案 2 :(得分: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
            }
        }
    }

希望它对您有用。如果您有任何问题,请告诉我!!!

答案 3 :(得分:0)

NSUInteger index = [mapView.annotations indexOfObject:view.annotation];

使用此行代码,以便获取当前索引