我正在开发一个地图应用程序,我希望在点击注释时获取索引。我正在努力实现同样的目的:
-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view{
MKPointAnnotation *point = view.annotation;
NSLog(@"%@",point.title);
NSLog(@"%d",indexOfTheObject);
}
但它总是给我一个随机数。
我假设didSelectAnnotationView
代表的工作方式与didSelectRowAtIndexPath
类似。
纠正我错误的地方。
任何帮助都会很明显。
感谢。
答案 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];
使用此行代码,以便获取当前索引