地图上的自定义注释



我有一个应用程序,用户按下按钮并拍照,然后照片进入ImageAnnotation类,必须将其添加到地图中,但我收到这样一个错误:"在隐式展开可选的";

只有这个错误会阻止应用程序正常工作,如果你能帮助我,我会非常感谢高度

这是代码

extension MapViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

picker.dismiss(animated: true, completion: nil)

guard let ecoImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage else { return }

guard let currentLocation = locationManager.location else { return }
let pin = ImageAnnotation(coordinate: CLLocationCoordinate2D(latitude: currentLocation.coordinate.latitude, longitude: currentLocation.coordinate.longitude), image: ecoImage, color: UIColor.systemGreen)
}

}

以下是必须为地图创建自定义注释的类

class ImageAnnotation : NSObject, MKAnnotation {
var coordinate: CLLocationCoordinate2D
var imageEco: UIImage?
var color: UIColor?
var imageView: UIImageView!
init(coordinate: CLLocationCoordinate2D, image: UIImage, color: UIColor) {
self.coordinate = coordinate
imageEco = image
self.color = color
imageView.image = image
imageView.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
self.imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
imageView.addSubview(self.imageView)
self.imageView.layer.cornerRadius = 25
self.imageView.layer.masksToBounds = true
}

}

以下是必须实现的最终结果

您说的是imageView.image = image。但imageView就是nil。所以你崩溃了。没有什么大的惊喜。

从更大的角度来看,您似乎没有意识到注释和注释视图之间的区别。注释只是一个信息载体:它可以说明坐标是什么,也许应该显示什么图像,但仅此而已。地图视图代理的工作是根据需要创建相应的注释视图,是处理视图

最新更新