// // MapAnnotationView.swift // Runner // // Created by Groot on 2025/5/9. // import UIKit import MapKit class MapAnnotationView: MKAnnotationView { static let identifier: String = "MapAnnotationView" var marker: ATMapMarker? private let imageView = UIImageView() override init(annotation: MKAnnotation?, reuseIdentifier: String?) { super.init(annotation: annotation, reuseIdentifier: reuseIdentifier) self.marker = annotation as? ATMapMarker // 确保视图可见 self.canShowCallout = false self.isEnabled = true self.isHidden = false setupImageView() } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } private func setupImageView() { // 设置默认图像 let defaultImage = UIImage() imageView.image = defaultImage imageView.contentMode = .scaleAspectFit // 添加图像视图到注释视图 addSubview(imageView) // 设置图像视图的大小和位置 imageView.frame = CGRect(x: 0, y: 0, width: 30, height: 30) // 设置注释视图的大小 self.frame = imageView.frame // 设置注释视图的中心点偏移 self.centerOffset = CGPoint(x: 0, y: -imageView.frame.height / 2) } override func prepareForDisplay() { super.prepareForDisplay() // 根据标记状态更新图像 updateImage() } private func updateImage() { // 使用已有的图像资源,而不是不存在的 marker_selected 和 marker_default let defaultImage = UIImage() imageView.image = defaultImage // 如果被选中,可以修改图像视图的外观 if let isSelected = marker?.isSelected, isSelected { imageView.layer.borderWidth = 2.0 imageView.layer.borderColor = UIColor.blue.cgColor imageView.layer.cornerRadius = imageView.frame.width / 2 } else { imageView.layer.borderWidth = 0 } } override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) if selected { self.marker?.isSelected = true } else { self.marker?.isSelected = false } // 更新图像以反映选中状态 updateImage() } }