如何在 Swift 5 中更改 MKPointAnnotation 的颜色?

How to change the color of a MKPointAnnotation in Swift 5?

我想根据特定列表用绿色显示注释。我该怎么做?这是我的代码:

for i in closestpharmacyname{
    var docref2 = db.collection("pharmacies").document(i)
    print("Pharmacy: ", i)
    docref2.getDocument(source: .cache) { (document, error) in
        if var document  = document {
            var pharmacylatitude = document.get("latitude") as! Double
            var pharmacylongitude = document.get("longitude") as! Double
            print(pharmacylatitude, pharmacylongitude)
                             
            var pharmacyannotation = MKPointAnnotation()
            pharmacyannotation.coordinate = CLLocationCoordinate2D(latitude: pharmacylatitude, longitude: pharmacylongitude)
            pharmacyannotation.title = i
                    
            self.MapView.addAnnotation(pharmacyannotation)
        }else{
            print("Document does not exist")
        }
    }
}

一切正常,除了注释是标准的红色。

尝试改用 MKMarkerAnnotationView,这样您就可以自定义颜色。据我所知,不可能更改 MKPointAnnotation 的颜色。 MKMarkerAnnotationView 看起来也一样。

更具体地说,您需要添加此功能,根据我的理解,它采用 MKPointAnnotation 和 returns 一个 MKMarkerAnnotationView,您可以自定义每一个,这意味着您可以使用 switch 语句来给每个注释有条件地使用不同的颜色。

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    let annotationView = MKMarkerAnnotationView(annotation: annotation, reuseIdentifier: "something")
    annotationView.markerTintColor = .green //custom colors also work, additionally to these default ones
    return annotationView
}

为了更好地了解自定义注释,包括图片中的自定义符号而不是默认符号,请查看此 link: https://medium.com/better-programming/how-to-customize-mapkit-annotations-baad32487a7