Custom image as annotation pin with two different colour images
我正在尝试为我的图钉注释添加自定义图像,并为某些注释更改自定义图像的颜色。颜色变了。但是,图像不显示。而是显示默认引脚。
这是我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | class MyPointAnnotation : MKPointAnnotation { var pinTintColor: UIColor? } class ViewController: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate{ @IBOutlet weak var map: MKMapView! func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier:"myAnnotation") as? MKPinAnnotationView if annotationView == nil { annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier:"myAnnotation") annotationView?.canShowCallout = true } else { annotationView?.annotation = annotation } if annotation is MKUserLocation { return nil } if let annotation = annotation as? MyPointAnnotation { annotationView?.pinTintColor = annotation.pinTintColor annotationView?.image = UIImage(named:"BLog.png") } return annotationView } override func viewDidLoad() { super.viewDidLoad() self.map.delegate = self let annotation1 = MyPointAnnotation() annotation1.coordinate = CLLocationCoordinate2DMake([LatArray], [LonArray]) annotation1.title = NameArray annotation1.pinTintColor = .red let annotation2 = MyPointAnnotation() annotation2.coordinate = CLLocationCoordinate2DMake([LatArray2], [LonArray2]) annotation2.title = NameArray2 annotation2.pinTintColor = .green } } |
图像"BLog.png" 位于主包中。
我已将 MKMapView 分配为委托。
但图像仍然不会改变。
您需要使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { if annotation is MKUserLocation { return nil } if // Image pin // { var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier:"image") if annotationView == nil { annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier:"image") annotationView?.canShowCallout = true annotationView?.image = UIImage(named:"BLog.png") let rightButton: AnyObject! = UIButton(type: UIButtonType.detailDisclosure) annotationView?.rightCalloutAccessoryView = rightButton as? UIView } else { annotationView?.annotation = annotation } return annotationView } else { var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier:"myAnnotation") as? MKPinAnnotationView if annotationView == nil { annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier:"myAnnotation") annotationView?.canShowCallout = true } else { annotationView?.annotation = annotation } if let annotation = annotation as? MyPointAnnotation { annotationView?.pinTintColor = annotation.pinTintColor } return annotationView } } |