是否可以同时打开多个标注?
代码:
- (void)mapViewDidFinishLoadingMap:(MKMapView *)theMapView {
for (id<MKAnnotation> currentAnnotation in theMapView.annotations) {
[theMapView selectAnnotation:currentAnnotation animated:YES];
}
}
只打开一个标注。
答案 0 :(得分:9)
请注意,MKMapView
(不是MKAnnotationView
)上有一种方法可以按照您的预期以编程方式选择注释:
- (void)selectAnnotation:(id < MKAnnotation >)annotation animated:(BOOL)animated
但是,它会同时自动取消选择任何当前注释,因此这不能解决您的问题。
奇怪的是,MKMapView
上的某个属性似乎包含一系列当前选定的注释:
@property(nonatomic, copy) NSArray *selectedAnnotations
但是这个方法的文档说:
“为此属性分配新数组 选择第一个注释 只有阵列。“
只是觉得这可能很有意思。
答案 1 :(得分:8)
从严格的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
答案 2 :(得分:0)
自iOS 11开始,Apple添加了名为MKMarkerAnnotationView
的新注释视图。
在func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView?
中,当使注释视图出队时,请确保将其强制转换为MKMarkerAnnotationView(例如var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier) as? MKMarkerAnnotationView
),并将视图的属性titleVisibility
和subtitleVisibility
设置为{ {1}}。