我正在使用地图视图注释。 标记注释应使用停车规则类型显示 如果已支付,则“支付”销钉图像;如果已支付,则“免费”销毁图像 我将所有注释都显示为“付费”图片
我在下面附加了我的代码,在此问题上,有谁能帮助我解决
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
// Don't want to show a custom image if the annotation is the user's location.
guard !(annotation is MKUserLocation) else {
return nil
}
// Better to make this class property
let annotationIdentifier = "AnnotationIdentifier"
var annotationView: MKAnnotationView?
if let dequeuedAnnotationView = mapView.dequeueReusableAnnotationView(withIdentifier: annotationIdentifier) {
annotationView = dequeuedAnnotationView
annotationView?.annotation = annotation
}
else {
annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: annotationIdentifier)
annotationView?.rightCalloutAccessoryView = UIButton(type: .detailDisclosure)
}
if let annotationView = annotationView {
// Configure your annotation view here
if parkingTypeArray.count > 0 {
for cameraa in parkingTypeArray.enumerated() {
if cameraa.element == "Free street parking" {
let pinImage = UIImage(named: "free")
annotationView.image = pinImage
}else if cameraa.element == "Paid street parking" {
let pinImage = UIImage(named: "paid")
annotationView.image = pinImage
}else if cameraa.element == "Paid parking" {
let pinImage = UIImage(named: "paid")
annotationView.image = pinImage
}
}
}
}
return annotationView
}
答案 0 :(得分:1)
我使用自定义功能完成的事情 MKPointAnnotation
课程
class MyPointAnnotation : MKPointAnnotation {
var obj : ComparableData?
init(data_obj : ComparableData) {
self.obj = data_obj
super.init()
}
}
设置地图
for item in self.Arr_Map_Comparables{
if item.Latitude != "" && item.Longitude != ""{
let annotation = MyPointAnnotation(data_obj: item)
annotation.coordinate = CLLocationCoordinate2D(latitude: Double(item.Latitude!)!, longitude: Double(item.Longitude!)!)
annotation.title = item.Full_Address
mapView.addAnnotation(annotation)
}
}
self.focusMarkers(markers: mapView.annotations, width: 50)
MapView委托方法
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView?{
// Don't want to show a custom image if the annotation is the user's location.
guard !(annotation is MKUserLocation) else {
return nil
}
// Better to make this class property
let annotationIdentifier = "AnnotationIdentifier"
var annotationView: MKAnnotationView?
if let dequeuedAnnotationView = mapView.dequeueReusableAnnotationView(withIdentifier: annotationIdentifier) {
annotationView = dequeuedAnnotationView
annotationView?.annotation = annotation
}
else {
annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: annotationIdentifier)
}
if let annotationView = annotationView {
// Configure your annotation view here
annotationView.canShowCallout = true
if let annotation = annotationView.annotation as? MyPointAnnotation{
if annotation.obj?.Status_Mls == "Active"{
annotationView.image = UIImage(named: "active")
}else if annotation.obj?.Status_Mls == "Sold"{
annotationView.image = UIImage(named: "sold")
}else{
annotationView.image = UIImage(named: "other")
}
}
}
return annotationView
}