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
}
答案 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
}