如何在 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
我想根据特定列表用绿色显示注释。我该怎么做?这是我的代码:
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