Невозможно сделать наложения MKMapView видимыми;mapView (_ mapView: MKMapView, средство визуализации для наложения: MKOverlay) не вызывается - PullRequest
0 голосов
/ 30 декабря 2018

Я назначил mapView.delegate контроллером представления и реализовал заглушки протокола для MKMapViewDelegate.

Просмотр загружен

let mapFrame = LayoutManager.between(elementAbove: roundName, elementBelow: selectTeamButton, width: view.frame.width, topPadding: 2 * .MARGINAL_PADDING, bottomPadding: .PADDING)
mapView = MKMapView(frame: mapFrame)
mapView.delegate = self
mapView.showsUserLocation = true
mapView.setUserTrackingMode(.follow, animated: true)
view.addSubview(mapView)var points: [CLLocationCoordinate2D] = [CLLocationCoordinate2D]()


for annotation in boundaries {
    points.append(annotation.coordinate)
}

borderDrawing = MKPolyline(coordinates: &points, count: points.count)
mapView.addOverlay(borderDrawing, level: .aboveLabels)

Однако в моем методе делегата mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) я не могу получить какие-либо события для запуска.

Я проверил статус делегата - я все еще могу получить ожидаемое поведение от mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation), изменив цвет булавки.

private func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
        debugPrint("called rendererfor")
        if overlay is MKPolyline {
            let polylineRenderer = MKPolylineRenderer(overlay: overlay)
            polylineRenderer.strokeColor = rgba(0, 88, 230, 0.7)
            polylineRenderer.lineWidth = 5
            return polylineRenderer
        } else {
            return MKOverlayRenderer(overlay: overlay)
        }
    }

К сожалению, от этого я не получаю никакого поведения,Строка debugPrint даже не выполнена.Я ломаю голову над тем, почему метод делегата не будет работать должным образом.

...