Как я могу использовать разные виды в одном MapView - PullRequest
0 голосов
/ 05 июля 2018

Как я могу использовать разные виды в одном MapView. Я имею в виду, если я использую

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView?

Тогда все аннотации вида будут одинаковыми в одном просмотре карты. Я имею в виду, как я могу установить другой стиль просмотра (включая изображения и т. Д.) В One MapView?

1 Ответ

0 голосов
/ 05 июля 2018

Вы можете использовать другой вид. Например,

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

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

            let rightButton: AnyObject! = UIButton(type: UIButtonType.detailDisclosure)
            pinView?.rightCalloutAccessoryView = rightButton as? UIView
        }
        else {
            pinView?.annotation = annotation
        }
        return pinView
    } else if ... {
        // Image annotation
        let reuseId = "image"
        var pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId)
        if pinView == nil {
            pinView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
            pinView?.canShowCallout = true
            pinView?.image = UIImage(named: "Laugh")

            let rightButton = UIButton(type: UIButtonType.detailDisclosure)
            pinView?.rightCalloutAccessoryView = rightButton
        }
        else {
            pinView?.annotation = annotation
        }

        return pinView
    }
}
...