缩小时注释消失

时间:2019-10-13 18:07:43

标签: ios swift xcode mkmapview

我有一个放置了注解的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
     }
  }

1 个答案:

答案 0 :(得分:0)

如果您返回nil作为注解的视图,那么它们完全显示的事实令人难以置信。正如之前提到的,this answer解决了大多数问题(来自this answer的评论也有效)。

如果要创建注释视图,则应在此方法末尾将其返回。并避免将蓝点替换为当前位置的注释(顺便说一句,此行为似乎是一个错误),请在您的委托方法的开头添加此代码:

guard annotation !== mapView.userLocation else {
            return nil
        }

祝你好运!