MapKit - маршрут найден, но не отображается

Я создаю маршрут в симуляторе iPhone от текущего местоположения пользователя до другой точки. Маршрут создан нормально, и я могу определить время и расстояние, которое потребуется, чтобы добраться до пункта назначения, но полилиния / наложение маршрута не отображается. Код довольно большой, поэтому ниже приведены основные части, которые, как мне кажется, необходимы для объяснения проблемы.

func tapTocreateRoute(){
    location = CLLocationCoordinate2D(latitude: 37.787359, longitude: -122.41)
    let placemark = MKPlacemark(coordinate: location)
    let mapItem = MKMapItem(placemark: placemark)
    routeCreater(mapItem: mapItem)      
}

 func routeCreater(mapItem: MKMapItem){

    let destinationPin = customPin(pinTitle: "end", pinSubtitle: "testing", location: carLocation)
    self.mapView.addAnnotation(destinationPin)

    let request = MKDirections.Request()
    request.source = MKMapItem.forCurrentLocation()
    request.destination = mapItem
    request.transportType = MKDirectionsTransportType.walking

    let directions = MKDirections(request: request)

    directions.calculate { (response, error) in
        guard let response = response else {
            print("MKDIRECTION error: \(error?.localizedDescription ?? "Error not found")")
            return
        }

        self.route = response.routes[0]
        self.mapView.addOverlay(self.route.polyline, level: .aboveRoads)

        self.mapView.setVisibleMapRect(self.route.polyline.boundingMapRect, animated: true)
        let rect = self.route.polyline.boundingMapRect
        self.mapView.setRegion(MKCoordinateRegion(rect), animated: true)

        self.walkingTime =  self.route.expectedTravelTime //displays correctly
        self.walkingDistance = self.route.distance // displays correctly

    }
}

  //Line Renderer for Route
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
    let lineRenderer = MKPolylineRenderer(overlay: overlay)
    lineRenderer.strokeColor = UIColor(red: 216/255, green: 71/255, blue: 30/255, alpha: 1)
    lineRenderer.lineWidth = 3.0
    return lineRenderer
}

я что-то упускаю с рендерингом? Спасибо за помощь


person STerrier    schedule 15.08.2019    source источник
comment
Вы не добавили полученную полилинию на вид карты.   -  person El Tomato    schedule 15.08.2019
comment
Извините, что именно вы имеете в виду El Tomato? Я добавляю на карту наложение на основе маршрута.   -  person STerrier    schedule 15.08.2019


Ответы (1)


Вы обязательно назначили делегата MapView, чтобы он знал, где искать средство визуализации?

person Community    schedule 15.08.2019
comment
Привет, Flowinho, да, я знаю - person STerrier; 15.08.2019
comment
Я программно создаю все представление и вызывал делегат MapView до того, как создал представление карты. Спасибо, что заставили меня осознать ошибку в моей логике! Теперь это работает! - person STerrier; 15.08.2019