2011-07-07 43 views
4

我有以下情况: - 3引脚与坐标相同,但不同的标题和信息 - 在地图上有ONY一个引脚MapKit多个引脚坐标相同,不同的信息选择

它可以挖掘多次在该引脚上,注释显示为: - 第一次点击 - >引脚1的注释 - 第二次点击 - >引脚2的注释 - 第三次点击 - >引脚3的注释 - 第四次点击 - >针脚1的注释

您有什么想法应该如何实现它吗?

+0

您现在解释它的工作方式 - 点击多次循环浏览标注 - 但不是您希望如何工作。很难理解你在问什么。 –

+0

如果在地图上以相同的坐标放置3个或更多针脚,当我点击多次时,只有其中2个显示在该泡泡标注中。所以,在这种情况下,我想显示3个或更多不同的标注信息。 – dorin

+0

Nevan可以请你提供一些建议吗? – dorin

回答

2

您可以实施didSelectAnnotationView委托方法,并根据上次“正确”选择的内容选择“正确”注释。

如果你只在地图上和这些注释只有其中之一集群,那么你就可以保持一个int伊娃说会记住最后一次选择的注释是在委托方法增加它。

例如:

// In .h 
int lastAnnotationSelected; 

// In .m 
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view 
{ 
    int nextAnnotationToSelect = (lastAnnotationSelected + 1) 
            % mapView.annotations.count; 

    id<MKAnnotation> nextAnnotation = 
     [mapView.annotations objectAtIndex:nextAnnotationToSelect]; 

    [mapView selectAnnotation:nextAnnotation animated:YES]; 

    lastAnnotationSelected = nextAnnotationToSelect; 
} 

如果您还showsUserLocation打开,那么你就必须要在方法中添加的支票MKUserLocation并跳过它(如果你愿意的话),并进入下一个群集中的注释。另外,如果你有多个批注集群(坐标为A的坐标为3,坐标为B的坐标为5,坐标为C的坐标为4等),那么你需要跟踪一个lastAnnotationSelected的数组和数组中的方法,首先确定选择了哪个群集并获取要在该群集中选择的下一个注释。