如何以编程方式打开调出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应自动滚动到把你的注释在显示区的中心。
答
在迅速3这个被更新为:
func openAnnotation(annotation: MkAnnotation) {
_ = [mapView .selectAnnotation(annotation, animated: true)]
}
,并且可以使用任何注释被调用(这将打开注释标注视图并尝试中心在地图上标注)
例如在假设的注释列表中使用第二个注释。
openAnnotation(annotation: mapView.annotations[1])
+0
你的代码是ObjC(方括号)和Swift的混合。为什么创建一个数组然后丢弃它? – 2018-02-19 01:29:27
感谢Nate,为了修正这个错字。 – 2012-07-24 14:54:38
That's awesome dude .. – 2012-09-07 11:14:35
如果您知道要以编程方式选择的注释将位于地图视图的可见区域中,您可以使用'[mv annotationsInMapRect:mv.visibleMapRect]'。如果您正在处理大量的地图注释,这将提高性能。 – 2013-11-05 01:42:14