我有以下情况:
– 3个具有相同坐标但标题和信息不同的引脚
– 在地图上有一个针脚
可以在该引脚上多次点击,并且显示的注释为:
– 第一次点按 – >针脚1的注释
– 第二次点按 – >针脚2的注释
– 第三次点击 – >针脚3的注释
– 第四次点击 – >针脚1的注释
你有什么想法我应该如何实现它?
最佳答案 您可以实现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,坐标B处为5,坐标C处为4等),那么您需要跟踪lastAnnotationSelected int的数组并在方法中首先确定选择了群集并获取要在该群集中选择的下一个注释.