Как программно установить состояние «выбрано с выноской» для маркера MapKit - PullRequest
0 голосов
/ 17 сентября 2018

В 2017 году MKMarkerAnnotationView было объявлено о замене MKPinAnnotationView. Как описано в этом видео WWDC в 12:21, MKMarkerAnnotationView имеет три состояния:

  1. Нормальный
  2. Selected
  3. Выбран с помощью выноски

Как программно установить состояние «Выбрано с помощью выноски», чтобы оно отображалось так же, как в видео WWDC? Кажется, это должно быть очень простым делом, но я абсолютно ничего не вижу в документации MapKit, единственный способ заставить его работать надежно - это:

enter image description here

Документация Ссылки:

  1. MKAnnotationView
  2. MKMarkerAnnotationView

1 Ответ

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

Вы можете использовать canShowCallout свойство.

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    if annotation is MKUserLocation {
        return nil
    }

    let reuseId = "pin"
    var pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) as? MKMarkerAnnotationView
    if pinView == nil {
        pinView = MKMarkerAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
        pinView?.canShowCallout = true

        let rightButton: AnyObject! = UIButton(type: UIButtonType.detailDisclosure)
        pinView?.rightCalloutAccessoryView = rightButton as? UIView

    }
    else {
        pinView?.annotation = annotation
    }
    return pinView
}

И вам нужно выбрать аннотацию, чтобы установить состояние «Выбрано с помощью выноски».

mapView.selectAnnotation(annotation, animated: true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...