如何以编程方式打开调出MKAnnotationView? (iPhone,MapKit)

问题描述:

我想以编程方式打开MKPinAnnotationView的标注。例如,我在地图上放下10个针脚,并想打开距离我最近的那个针脚。我会如何去做这件事?如何以编程方式打开调出MKAnnotationView? (iPhone,MapKit)

Apple为MKAnnotationView's指定了'selected'参数,但不鼓励直接设置它(这不起作用,尝试过)。

对于剩下MKAnnotationView只有一个setHighlighted(同样的故事),并能ShowCallout方法..

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

在你的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

在迅速3这个被更新为:

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

,并且可以使用任何注释被调用(这将打开注释标注视图并尝试中心在地图上标注)

例如在假设的注释列表中使用第二个注释。

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

你的代码是ObjC(方括号)和Swift的混合。为什么创建一个数组然后丢弃它? – 2018-02-19 01:29:27