how to change pin color in mapkit under the same annotationview (swift3)

后端 未结 1 1014
清歌不尽
清歌不尽 2021-01-16 12:48

I have 2 pins in mapkit, both are under the same annotation view so it makes since that both of the pins are the same color. How can I make the pins different colors. I wou

相关标签:
1条回答
  • 2021-01-16 13:17

    Subclass MKPointAnnotation to add any custom property that you want, such as a pinTintColor:

    class MyPointAnnotation : MKPointAnnotation {
        var pinTintColor: UIColor?
    }
    
    class ViewController: UIViewController, MKMapViewDelegate {
        @IBOutlet var jmap: MKMapView!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            jmap.delegate = self
    
            let hello = MyPointAnnotation()
            hello.coordinate = CLLocationCoordinate2D(latitude: 40, longitude: -73)
            hello.pinTintColor = .red
    
            let hellox = MyPointAnnotation()
            hellox.coordinate = CLLocationCoordinate2D(latitude: 34, longitude: -72)
            hellox.pinTintColor = .blue
    
            jmap.addAnnotation(hello)
            jmap.addAnnotation(hellox)
        }
    
        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")
            } else {
                annotationView?.annotation = annotation
            }
    
            if let annotation = annotation as? MyPointAnnotation {
                annotationView?.pinTintColor = annotation.pinTintColor
            }
    
            return annotationView
        }
    }
    
    0 讨论(0)
提交回复
热议问题