MKAnnotationView изображения не меняются - PullRequest
0 голосов
/ 07 декабря 2018

enter image description here

Я пытаюсь показать изображения в MKAnnotationView.Изображения загружаются изначально, но когда я пытаюсь изменить изображения для нескольких нажатием кнопки, изображения не меняются, а перекрываются.Ниже приведен код, который я использовал.

Делегат MapView

extension MapViewController: MKMapViewDelegate {

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    if annotation is MKUserLocation {
        return nil
    }

    var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "MapAnnotation") as? MapAnnotationView

    if annotationView != nil {
        annotationView?.annotation = annotation
    }
    else {

        annotationView = MapAnnotationView(annotation: annotation, reuseIdentifier: "MapAnnotation")
    }

    annotationView?.canShowCallout = true

    return annotationView
}

MKAnnotationView

class MapAnnotationView: MKAnnotationView {

// Required for MKAnnotationView
required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}

override init(annotation: MKAnnotation?, reuseIdentifier: String?) {

    super.init(annotation: annotation, reuseIdentifier: reuseIdentifier)
    //super.prepareForReuse()
  guard let attractionAnnotation = self.annotation as? MapAnnotation else { return }
    if attractionAnnotation.type == PinType.hospital {
    image = UIImage.init(named: "hospital_green")

}
}

Действие кнопки

@IBAction func btnGreen_Click(_ sender: Any) {
    for annotation in (policyMapView?.annotations)! {
        let mapAnnotationView = policyMapView?.view(for: annotation) as? AssistMapAnnotationView

        //if !(mapAnnotationView?.annotation is MKUserLocation) {
        if !(mapAnnotationView?.annotation is MKUserLocation) {

            let mapAnnotation = annotation as? AssistMapAnnotation

            if mapAnnotation?.type == PinType.hospital {
                if (mapAnnotation?.insurer_id == selectedInsurer1) {
                    mapAnnotationView?.image = UIImage.init(named: "hospital_purple")
                }else{
                    mapAnnotationView?.image = UIImage.init(named: "hospital_green")
                }
            } 

        } else {

        }
    }
}
}
...