我的MKMapView有很多正确顺序的注释。我有按钮来改变地图模式:
- (IBAction)userDidPressTrackButton:(id)sender {
if (self.mapView.userTrackingMode == MKUserTrackingModeFollow) {
self.mapView.userTrackingMode = MKUserTrackingModeFollowWithHeading;
return;
}
if (self.mapView.userTrackingMode == MKUserTrackingModeFollowWithHeading) {
self.mapView.userTrackingMode = MKUserTrackingModeNone;
return;
}
if (self.mapView.userTrackingMode == MKUserTrackingModeNone) {
self.mapView.userTrackingMode = MKUserTrackingModeFollow;
}
}
当mode = MKUserTrackingModeFollowWithHeading
注释开始按随机顺序排列时。似乎在这种模式下,mapview开始每秒重绘一次,并将所有子视图(注释)置于未知的顺序。
如何取消更改注释的顺序?
答案 0 :(得分:0)
您从mapview.annotations
返回的注释数组不能保证与您添加它们的顺序相同。如果您依靠特殊顺序依赖它们,那么您可能正在执行viewForAnnotations
annotation
1}}功能错误。它被赋予viewForAnnotations
作为参数,您可以使用它来确定要绘制的视图。通常人们会创建一个实现MKAnnotation协议的自定义类,并且有一些附加变量,用于存储创建正确视图所需的数据。当{{1}}被调用时,它们检查提供的注释是否是它们的特殊类之一,如果是,则提取数据,创建视图并返回它。没有必要知道注释数组的顺序,并且它对你没有任何好处,因为MKMapView可以并且将以它喜欢的任何顺序请求注释。
旁注:为什么要编写自己的功能来切换跟踪模式?您可以use the official one,它会为您完成所有操作。