在MKMapView中显示的多个注释标注

问题描述 投票:13回答:3

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

代码:

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

仅打开一个标注。

iphone mkmapview mkannotation
3个回答
9
投票

请注意,MKMapView上有一种方法(不是MKAnnotationView),可以以编程方式选择一个或多或少可以像您期望的那样工作的注释:

- (void)selectAnnotation:(id < MKAnnotation >)annotation animated:(BOOL)animated

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

奇怪的是,MKMapView上有一个属性,该属性似乎包含当前所选注释的数组:

@property(nonatomic, copy) NSArray *selectedAnnotations

但是有关此方法的文档说:

“将新数组分配给该属性选择第一个注释仅数组。“

只是认为这可能很有趣。


8
投票

从严格的API角度看,这似乎是不可能的。

-(void)setSelected:(BOOL)selected animated:(BOOL)animated上的MKAnnotationView选择器状态:“ 您不应直接调用此方法。MKMapView对象将响应用户与注释的交互而调用此方法。”因此,基本消息是选择完全由用户选择负责的情况下,annotationView实例的数量,并且由于用户一次只能选择一个实例,因此您不能同时选择其中的几个实例。

即使文档说不应直接调用此方法,您是否还是尝试在多个setSelected:YES实例上使用MKAnnotationView调用它,以查看其提供了什么?

我将这样做的干净方法:(不过,未经测试)

  • 不依赖于MKMapView的选择机制
  • 将MKAnnotationView子类化以实现自定义一个
  • 以标注是注释视图的一部分]的方式进行自定义,以便可以显示其中的几个。
  • 如果您这样做,则可以同时显示多个标注气泡,并得到类似以下内容的东西:

alt text http://a1.phobos.apple.com/us/r1000/048/Purple/2b/b2/ec/mzl.ttcsrlee.480x480-75.jpg


0
投票

[自iOS 11起,Apple添加了名为MKMarkerAnnotationView的新注释视图。

© www.soinside.com 2019 - 2024. All rights reserved.