2010-03-10 77 views
12

是否可以同時打開多個標註?在MKMapView中顯示多個註釋標註

代碼:

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

只打開一個標註。

+0

爲什麼超過1?屏幕尺寸不夠大,這會讓用戶感到困惑。 – kennytm 2010-03-10 15:12:13

+2

這是對的,但如果地圖上只有兩個三針,並且距離足夠大 - 用戶不會感到困惑。 而且,是的,這是我的客戶的要求。 – Ievgen 2010-03-10 16:05:30

回答

7

從嚴格的API角度來看,這似乎不可能。

-(void)setSelected:(BOOL)selected animated:(BOOL)animated選擇器上MKAnnotationView狀態:「 你不應該直接調用此方法的一個的MKMapView對象調用此方法響應於用戶交互與註釋」,使底層的信息是,annotationView實例在選擇在用戶選擇的全部責任之下,並且由於用戶一次只能選擇其中一個,所以您不應該同時選擇其中的幾個。

即使文檔說不應該直接調用此方法,您是否嘗試在幾個MKAnnotationView實例上使用setSelected:YES來調用它,以查看它提供了什麼?

清潔方式,我會做到這一點:(但是沒有測試自己)

  • 沒有依靠的MKMapView
  • 子類MKAnnotationView的選擇機制來實現自定義一個
  • 以這樣的方式進行自定義:標註是註釋視圖的一部分,以便您可以顯示其中的幾個。

如果你不喜歡這樣,你可以在同一時間出現幾個標註泡沫和得到的東西,看起來像:

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

+0

謝謝你的回答。是的,你說得對,這可能有用。 – Ievgen 2010-03-11 09:12:38

+0

你是否設法讓它工作? – 2010-09-26 12:14:20

9

注意這裏是MKMapView的方法(不MKAnnotationView)以編程方式選擇一個註解,作品或多或少如你所願:

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

但是,它會自動取消任何目前同時註解,所以這並不能解決你的問題。

奇怪的是,有一個似乎保持當前選定的註釋陣列上MKMapView屬性:

@property(nonatomic, copy) NSArray *selectedAnnotations 

但這種方法的文件說:

「分配一個新的數組此屬性 只選擇 數組中的第一個註釋。「

只是認爲這可能是有趣的。

+0

不幸的是,截至2013年和iOS 6.1,它仍然是你描述的。 – Klaas 2013-03-14 17:37:37