是否可以同时打开多个标注?
代码:
- (void)mapViewDidFinishLoadingMap:(MKMapView *)theMapView {
for (id<MKAnnotation> currentAnnotation in theMapView.annotations) {
[theMapView selectAnnotation:currentAnnotation animated:YES];
}
}
仅打开一个标注。
请注意,MKMapView
上有一种方法(不是MKAnnotationView
),可以以编程方式选择一个或多或少可以像您期望的那样工作的注释:
- (void)selectAnnotation:(id < MKAnnotation >)annotation animated:(BOOL)animated
但是,它会同时自动取消选择当前任何注释,因此不能解决您的问题。
奇怪的是,MKMapView
上有一个属性,该属性似乎包含当前所选注释的数组:
@property(nonatomic, copy) NSArray *selectedAnnotations
但是有关此方法的文档说:
“将新数组分配给该属性选择第一个注释仅数组。“
只是认为这可能很有趣。
从严格的API角度看,这似乎是不可能的。
-(void)setSelected:(BOOL)selected animated:(BOOL)animated
上的MKAnnotationView
选择器状态:“ 您不应直接调用此方法。MKMapView对象将响应用户与注释的交互而调用此方法。”因此,基本消息是选择完全由用户选择负责的情况下,annotationView实例的数量,并且由于用户一次只能选择一个实例,因此您不能同时选择其中的几个实例。
即使文档说不应直接调用此方法,您是否还是尝试在多个setSelected:YES
实例上使用MKAnnotationView
调用它,以查看其提供了什么?
我将这样做的干净方法:(不过,未经测试)
如果您这样做,则可以同时显示多个标注气泡,并得到类似以下内容的东西:
alt text http://a1.phobos.apple.com/us/r1000/048/Purple/2b/b2/ec/mzl.ttcsrlee.480x480-75.jpg
[自iOS 11起,Apple添加了名为MKMarkerAnnotationView
的新注释视图。