我有一个放置了注解的mapView,但是当我缩小时,它们消失了。我看过其他教程,这些教程表明您必须将显示优先级设置为.required,但这对我仍然不起作用。
这是我的代码
extension MapVC: MKMapViewDelegate {
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
guard let _annotation = annotation as? MyAnnotation else {return nil}
let identifier = "Annotation"
var view: MKMarkerAnnotationView
if let dequeuedView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier) as? MKMarkerAnnotationView {
dequeuedView.annotation = annotation
dequeuedView.titleVisibility = .visible
dequeuedView.displayPriority = .required
view = dequeuedView
}
else
{
view = MKMarkerAnnotationView(annotation: annotation, reuseIdentifier: identifier)
view.canShowCallout = true
view.calloutOffset = CGPoint(x: -5, y: 5)
view.rightCalloutAccessoryView = UIButton(type: .detailDisclosure)
view.displayPriority = .required
view.titleVisibility = .visible
}
return nil
}
}
答案 0 :(得分:0)
如果您返回nil作为注解的视图,那么它们完全显示的事实令人难以置信。正如之前提到的,this answer解决了大多数问题(来自this answer的评论也有效)。
如果要创建注释视图,则应在此方法末尾将其返回。并避免将蓝点替换为当前位置的注释(顺便说一句,此行为似乎是一个错误),请在您的委托方法的开头添加此代码:
guard annotation !== mapView.userLocation else {
return nil
}
祝你好运!