我想要以编程的方式展开MKPinAnnotationView
的呼出框。例如,我在地图上放置了10个标注,想要打开离我最近的一个。我该如何做到这一点?
Apple已经为MKAnnotationView
指定了“selected”参数,但不鼓励直接设置它(尝试过后发现无效)。
对于其余部分,MKAnnotationView
仅具有setHighlighted方法(同样的故事),以及ShowCallout
方法。
请问这是否可能实现?
我想要以编程的方式展开MKPinAnnotationView
的呼出框。例如,我在地图上放置了10个标注,想要打开离我最近的一个。我该如何做到这一点?
Apple已经为MKAnnotationView
指定了“selected”参数,但不鼓励直接设置它(尝试过后发现无效)。
对于其余部分,MKAnnotationView
仅具有setHighlighted方法(同样的故事),以及ShowCallout
方法。
请问这是否可能实现?
- (void)openAnnotation:(id)annotation
{
//mv is the mapView
[mv selectAnnotation:annotation animated:YES];
}
你可以根据当前位置,遍历数组中可用的注释,并确定最接近的注释。
[mv annotations];
一旦计算出最接近的注解,调用:
[self openAnnotation:closestAnnotation];
地图视图应该自动滚动,以便将您的注释放置在显示区域的中心位置。
func openAnnotation(annotation: MkAnnotation) {
_ = [mapView .selectAnnotation(annotation, animated: true)]
}
任何注释都可以调用(这将打开注释弹出视图并尝试将注释居中于地图上)。
例如,在假设的注释列表中使用第二个注释。
openAnnotation(annotation: mapView.annotations[1])
[mv annotationsInMapRect:mv.visibleMapRect]
。如果您正在处理大量地图注释,则这将提供更高的性能水平。 - John Erck