Задать глифекст аннотации на основе свойств аннотации - PullRequest
0 голосов
/ 25 сентября 2018

Я столкнулся с проблемой некорректного отображения пользовательских аннотаций.В своем коде я проверяю, относится ли текущая аннотация к станции с заданным уникальным идентификатором.Если это так, я настраиваю его свойства.

StationAnnotationView.swift

class StationAnnotationView: MKMarkerAnnotationView {

override var annotation: MKAnnotation? {
    willSet {
        guard let station = newValue as? Station else { return }

        clusteringIdentifier = nil
        displayPriority = .required

        if (station.id == "26") {
                glyphText = "p"
                markerTintColor = UIColor(named: "Blue")
        }
    }
}

Сначала мой mapView правильно отображает аннотации (т. Е. Изменяя цвет иglyphtext для единственной станции с station.id == 26), но после некоторого панорамирования и масштабирования мое пользовательское форматирование начинает применяться к другим аннотациям (что не должно происходить, потому что для любой данной station.id есть только одна станция).Я подозреваю, что это из-за AnnotationView повторного использования аннотации.Как я могу предотвратить это?

1 Ответ

0 голосов
/ 25 сентября 2018

Как вы сказали, это связано с тем, что AnnotationView повторно использует аннотацию.Попробуйте следующий код:

    if (station.id == "26") {
            glyphText = "p"
            markerTintColor = UIColor(named: "Blue")
    } else {
            glyphText = // Default text
            markerTintColor = // Default color
    }
...