在MKMapView中显示多个注释标注

Iev*_*gen 13 iphone mkmapview mkannotation

是否可以同时打开多个标注?

代码:

- (void)mapViewDidFinishLoadingMap:(MKMapView *)theMapView {
    for (id<MKAnnotation> currentAnnotation in theMapView.annotations) {
        [theMapView selectAnnotation:currentAnnotation animated:YES];
    }
}
Run Code Online (Sandbox Code Playgroud)

只打开一个标注.

jos*_*hrl 9

请注意,有一种方法MKMapView(不MKAnnotationView)用于以编程方式选择注释,或多或少地按预期工作:

- (void)selectAnnotation:(id < MKAnnotation >)annotation animated:(BOOL)animated
Run Code Online (Sandbox Code Playgroud)

但是,它会同时自动取消选择任何当前注释,因此这不能解决您的问题.

奇怪的是,有一个属性MKMapView似乎包含一系列当前选定的注释:

@property(nonatomic, copy) NSArray *selectedAnnotations
Run Code Online (Sandbox Code Playgroud)

但是这个方法的文档说:

"为此属性指定一个新数组仅选择数组中的第一个注释."

只是觉得这可能是有趣的.


yon*_*nel 8

从严格的API角度来看,这似乎不可行.

__CODE__上选择__CODE__状态:" 你不应该直接调用此方法的的MKMapView对象调用此方法来响应用户交互与注释 ",让底层的消息是,annotationView情况下,在用户选择的全部责任下的选择,并且由于用户一次只能选择其中一个,因此您无法同时选择其中一个.

即使文档说不应该直接调用此方法,您是否尝试__CODE__在几个__CODE__实例上调用它以查看它给出的内容?

我会做的清洁方式:(不测试自己)

  • 不要依赖MKMapView的选择机制
  • 子类MKAnnotationView实现自定义
  • 以这样的方式进行自定义,使得标注是注释视图的一部分,以便您可以显示其中的几个.

如果你这样做,你可以同时出现几个标注气泡,并得到一些看起来像这样的东西:

替代文字http://a1.phobos.apple.com/us/r1000/048/Purple/2b/b2/ec/mzl.ttcsrlee.480x480-75.jpg