我有以下情况: - 3个具有相同坐标但标题和信息不同的引脚 - 在地图上有一个针脚
可以在该引脚上多次点击,并且显示的注释为: - 第一次点按 - >针脚1的注释 - 第二次点按 - >针脚2的注释 - 第三次点击 - >针脚3的注释 - 第四次点击 - >针脚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的数组并在方法中,首先确定选择了哪个集群,并获取要在该集群中选择的下一个注释。