Route not showing in MKMapView?

后端 未结 2 621
醉话见心
醉话见心 2020-12-12 07:01

I have these method that adds routes for MKMapView between two CLLocation. i have both valid pickUpDistanceLocation & dropOffDistanceLocation



        
2条回答
  •  渐次进展
    2020-12-12 08:03

    Actually both source and destination variables were nil.. So i got bad response from the server.If you need just try the below code

    func addRoutesOverLayForMapView(){
    
        var source:MKMapItem?
        var destination:MKMapItem?
        var sourcePlacemark = MKPlacemark(coordinate: pickUpDistanceLocation!.coordinate, addressDictionary: nil)
        source = MKMapItem(placemark: sourcePlacemark)
    
        var desitnationPlacemark = MKPlacemark(coordinate: dropOffDistanceLocation!.coordinate, addressDictionary: nil)
        destination = MKMapItem(placemark: desitnationPlacemark)
        let request:MKDirectionsRequest = MKDirectionsRequest()
        request.setSource(source)
        request.setDestination(destination)
        request.transportType = MKDirectionsTransportType.Walking
    
        let directions = MKDirections(request: request)
        directions.calculateDirectionsWithCompletionHandler ({
            (response: MKDirectionsResponse?, error: NSError?) in
    
            if error == nil {
    
                self.showRoute(response!)
            }
            else{
    
            println("trace the error \(error?.localizedDescription)")
    
            }
        })
     }
    
    func showRoute(response:MKDirectionsResponse){
        for route in response.routes as! [MKRoute]{
            mapView.addOverlay(route.polyline, level: MKOverlayLevel.AboveRoads)
            var routeSeconds = route.expectedTravelTime
            let routeDistance = route.distance
            println("distance between two points is \(routeSeconds) and \(routeDistance)")
    
    
        }
    
    }
    

    And you should implement this delegate method,dont forget to set the mapview delegate

      func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! {
    
            if overlay is MKPolyline {
                var polylineRenderer = MKPolylineRenderer(overlay: overlay)
                polylineRenderer.lineDashPattern = [14,10,6,10,4,10]
                polylineRenderer.strokeColor = UIColor(red: 0.012, green: 0.012, blue: 0.012, alpha: 1.00)
                polylineRenderer.lineWidth = 2.5
                return polylineRenderer
            }
            return nil
    
        }
    

提交回复
热议问题