MapKit多个引脚相同的坐标,不同的信息选择

时间:2011-07-07 09:16:29

标签: iphone annotations mapkit tap

我有以下情况: - 3个具有相同坐标但标题和信息不同的引脚 - 在地图上有一个针脚

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

您有什么想法我应该如何实施它?

1 个答案:

答案 0 :(得分:2)

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

如果您在地图上有这些注释且其中一个群集,那么您可以保留一个int ivar来记住最后选择的内容注释是在委托方法中增加它。

例如:

// 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,坐标为5,坐标为4,等等),那么你需要跟踪lastAnnotationSelected int的数组并在方法中,首先确定选择了哪个集群,并获取要在该集群中选择的下一个注释。