2010-02-03 32 views
26

我想以編程方式打開MKPinAnnotationView的標註。例如,我在地圖上放下10個針腳,並想打開距離我最近的那個針腳。我會如何去做這件事?如何以編程方式打開調出MKAnnotationView? (iPhone,MapKit)

Apple爲MKAnnotationView's指定了'selected'參數,但不鼓勵直接設置它(這不起作用,嘗試過)。

對於剩下MKAnnotationView只有一個setHighlighted(同樣的故事),並能ShowCallout方法..

,如果這是不可能的任何提示?

回答

76

在你的MapViewController創建操作方法:

- (void)openAnnotation:(id)annotation 
{ 
    //mv is the mapView 
    [mv selectAnnotation:annotation animated:YES]; 

} 

然後,您可以決定根據當前位置和走在陣列中提供的註釋最接近註解。

[mv annotations]; 

一旦最接近的註解計算,撥打:

[self openAnnotation:closestAnnotation]; 

的MapView應自動滾動到把你的註釋在顯示區的中心。

+0

感謝Nate,爲了修正這個錯字。 – 2012-07-24 14:54:38

+0

That's awesome dude .. – 2012-09-07 11:14:35

+1

如果您知道要以編程方式選擇的註釋將位於地圖視圖的可見區域中,您可以使用'[mv annotationsInMapRect:mv.visibleMapRect]'。如果您正在處理大量的地圖註釋,這將提高性能。 – 2013-11-05 01:42:14

1

在迅速3這個被更新爲:

func openAnnotation(annotation: MkAnnotation) { 
_ = [mapView .selectAnnotation(annotation, animated: true)] 
} 

,並且可以使用任何註釋被調用(這將打開註釋標註視圖並嘗試中心在地圖上標註)

例如在假設的註釋列表中使用第二個註釋。

openAnnotation(annotation: mapView.annotations[1]) 
+0

你的代碼是ObjC(方括號)和Swift的混合。爲什麼創建一個數組然後丟棄它? – 2018-02-19 01:29:27