4

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

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

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

4

1 回答 1

2

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

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

例如:

// 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 整数数组,并在方法中首先确定什么集群被选中并获取下一个注释以在该集群中选择。

于 2011-07-07T14:32:48.943 回答