Route not showing in MKMapView?

后端 未结 2 617
醉话见心
醉话见心 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:00

    For Swift 2.1 :

    func addRoutesOverLayForMapView(){
    
        var source:MKMapItem?
        var destination:MKMapItem?
        let Scoordinate = CLLocationCoordinate2D(latitude: passLat, longitude: passLong)
        var sourcePlacemark = MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: passLat, longitude: passLong), addressDictionary: nil)
        source = MKMapItem(placemark: sourcePlacemark)
    
        let DCoordinate = CLLocationCoordinate2D(latitude: lati, longitude: longi)
        var desitnationPlacemark = MKPlacemark(coordinate: DCoordinate, addressDictionary: nil)
        destination = MKMapItem(placemark: desitnationPlacemark)
        let request:MKDirectionsRequest = MKDirectionsRequest()
        request.source = source
        request.destination = destination
        request.transportType = MKDirectionsTransportType.Walking
    
        let directions = MKDirections(request: request)
        directions.calculateDirectionsWithCompletionHandler ({
            (response: MKDirectionsResponse?, error: NSError?) in
    
            if error == nil {
    
                self.showRoute(response!)
            }
            else{
    
                print("some error")
    
            }
        })
    }
    
    func showRoute(response:MKDirectionsResponse){
        for route in response.routes {
            mapView.addOverlay(route.polyline, level: MKOverlayLevel.AboveRoads)
            let routeSeconds = route.expectedTravelTime
            let routeDistance = route.distance
            print("distance between two points is \(routeSeconds) and \(routeDistance)")
    
    
        }
    
    }
    
    
    func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {
    
         let polylineRenderer = MKPolylineRenderer(overlay: overlay)
    
        if overlay is MKPolyline {
            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 polylineRenderer
    
    }
    

提交回复
热议问题