26

我想以MKPinAnnotationView编程方式打开标注。例如,我在地图上放了 10 个图钉,并想打开离我最近的一个图钉。我该怎么做呢?

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

其余的MKAnnotationView只有一个 setHighlighted (相同的故事),并且可以ShowCallout方法..

如果这可能的话,有什么提示吗?

4

2 回答 2

81

在您的 mapViewController 中创建一个操作方法:

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

}

然后,您可以根据当前位置确定最近的注释并遍历数组中可用的注释。

[mv annotations];

一旦计算出最接近的注释,请调用:

[self openAnnotation:closestAnnotation];

mapView 应该自动滚动以将您的注释放置在显示区域的中心。

于 2010-02-26T04:45:18.993 回答
1

在 swift 3 中,这更新为:

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

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

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

openAnnotation(annotation: mapView.annotations[1])
于 2017-05-23T16:14:04.930 回答