#ios #swift #mapkit
#iOS #swift #mapkit
Вопрос:
Я пытаюсь изменить цвет вывода на основе переменной — цвет определенных выводов меняется, но это кажется случайным и не относится к цвету, который я ожидаю. Я подозреваю, что это как-то связано с dequeueReusableAnnotationView.Я пробовал без, но получил те же результаты. Есть идеи? Спасибо
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
guard annotation is MKPointAnnotation else { return nil }
let identifier = "Annotation"
var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier)
if annotationView == nil {
let pin = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
pin.canShowCallout = true
annotationView = pin
if globalDataSet[counter].fields.numdocksavailable == 0 {
print (counter,globalDataSet[counter].fields.numdocksavailable, globalDataSet[counter].fields.name)
print ("pin.pinTintColor = UIColor.systemBlue")
pin.pinTintColor = UIColor.systemBlue
} else {
print (counter,globalDataSet[counter].fields.numdocksavailable, globalDataSet[counter].fields.name)
print ("pin.pinTintColor = UIColor.systemRed")
pin.pinTintColor = UIColor.systemRed
}
counter = 1
} else {
annotationView!.annotation = annotation
}
return annotationView
}
Ответ №1:
Попробуйте следующий код.
if annotationView == nil {
let pin = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
pin.canShowCallout = true
annotationView = pin
} else {
annotationView!.annotation = annotation
}
if globalDataSet[counter].fields.numdocksavailable == 0 {
print (counter,globalDataSet[counter].fields.numdocksavailable, globalDataSet[counter].fields.name)
print ("annotationView.pinTintColor = UIColor.systemBlue")
annotationView.pinTintColor = UIColor.systemBlue
} else {
print (counter,globalDataSet[counter].fields.numdocksavailable, globalDataSet[counter].fields.name)
print ("annotationView.pinTintColor = UIColor.systemRed")
annotationView.pinTintColor = UIColor.systemRed
}
counter = 1
Комментарии:
1. привет — спасибо за ответ — к сожалению, это выдает мне значение ошибки типа annotationView, не имеет элемента pintintcolor и поэтому не выполняется сборка — мне удалось заставить его выполнить сборку, переместив «пусть pin = MKPinAnnotationView(аннотация: annotation, reuseIdentifier: identifier)» и изменив на pin.pinTintColor = но по-прежнему безуспешно.