ios - 如何在 Swift 5 中更改 MKPointAnnotation 的颜色?
问题描述
我想根据特定列表以绿色显示注释。我该怎么做?这是我的代码:
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 并返回一个 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
}
为了更好地理解自定义注释,包括图片中的自定义符号而不是默认值,请查看此链接: https ://medium.com/better-programming/how-to-customize-mapkit-annotations-baad32487a7
推荐阅读
- reactjs - 如何在数据中搜索其第一个字符与火存储中的数据字段匹配的特定字段值
- ios - swift 我想更改搜索栏背景颜色为白色,黑色边框
- angular - 如何在当前项目中在 Angular 中创建另一个项目
- ios - XCode 构建错误 - 缺少必需的模块“算法”
- python - Python API GET 请求 - 将多个值传递给单个参数
- c# - 使用 Magick.NET-Q16-AnyCPU 将矩形图像文件转换为具有透明填充的正方形文件
- javascript - 我想在 java 脚本中将数组转换为对象,例如 [ ["key1","ans1"],["key2","ans2"] ]=> {key1:"ans1",key2:"ans2"}
- python - 如何使用通用视图更新多个图像 (UpdateView)
- punctuation - 如何从数据框中的特定列中删除特定标点符号[不是所有标点符号]?
- ios - 获取我在 photoLibrary iOS Objective-c 中选择的视频的位置元数据