无法立即显示自定义AnnotationView的图像

时间:2016-12-02 12:18:36

标签: ios swift mkannotationview

PhotoAnnotation符合MKAnnotation,PhotoAnnotationView是MKAnnotationView的子类。 PhotoAnnotation具有图像属性。

问题是,一旦我打开应用程序,自定义注释的图像就不会显示在mapview上。我必须平移并移动到某个地方,然后移回原始区域,然后显示图像。

使用MKPinAnnotation没有这样的问题。针的图像会立即显示出来。

我不清楚如何修复它。请帮我。非常感谢。

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    if let annotation = annotation as? PhotoAnnotation {
        let identifier = "pin"
        let view: PhotoAnnotationView
        if let dequeuedView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier) as? PhotoAnnotationView {
            dequeuedView.annotation = annotation

            dequeuedView.image = annotation.image

            view = dequeuedView
        } else {
            view = PhotoAnnotationView(annotation: annotation, reuseIdentifier: identifier)
            view.canShowCallout = false
            view.image = nil
        }
        return view
    }
    return nil
}

1 个答案:

答案 0 :(得分:0)

请注意这一部分,' view.image = nil' ...因为在您之前没有创建注释的第一次加载时,它会落到您将图像设置为nil的代码中。处理那个,你很好。

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    if let annotation = annotation as? PhotoAnnotation {
        let identifier = "pin"
        let view: PhotoAnnotationView
        if let dequeuedView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier) as? PhotoAnnotationView {
            dequeuedView.annotation = annotation

            dequeuedView.image = annotation.image

            view = dequeuedView
        } else {
            view = PhotoAnnotationView(annotation: annotation, reuseIdentifier: identifier)
            view.canShowCallout = false
            view.image = UIImage() // do something here...
        }
        return view
    }
    return nil
}