Ios 如何将当前位置设置为request.source Swift 3

Ios 如何将当前位置设置为request.source Swift 3,ios,swift,xcode,Ios,Swift,Xcode,好的,希望是一个简单快速的问题 我正在构建一个mapView,它使用Apple Maps并运行良好,我的segue将纬度和经度注入地图,我希望从当前位置导航到包含lat和lon值的注释 我已经设法在地图上显示了当前位置,并显示了注释,但我不确定如何在下面的代码行中将当前位置设置为源点 request.source = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: lat,longitud

好的,希望是一个简单快速的问题

我正在构建一个mapView,它使用Apple Maps并运行良好,我的segue将纬度和经度注入地图,我希望从当前位置导航到包含lat和lon值的注释

我已经设法在地图上显示了当前位置,并显示了注释,但我不确定如何在下面的代码行中将当前位置设置为源点

request.source = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: lat,longitude: lon)))
这使用了我当前从segue注入的lat和lon变量。我希望request.source行是我的当前位置,lat和lon vars是我已经拥有的目的地

我只是不确定将request.source设置为我当前位置的语法

这是我的全部VC代码供参考:

导入UIKit 导入地图套件 导入核心定位

类LocateVC:UIViewController,MKMapViewDelegate{

@IBOutlet weak var mapView: MKMapView!
var lat: Double!
var lon: Double!
var name: String!
var locationManager = CLLocationManager()

func checkLocationAuthorizationStatus() {
    if CLLocationManager.authorizationStatus() == .authorizedWhenInUse {
        mapView.showsUserLocation = true
    } else {
        locationManager.requestWhenInUseAuthorization()
    }
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    checkLocationAuthorizationStatus()
}

override func viewDidLoad() {
    super.viewDidLoad()

    annotation.coordinate = CLLocationCoordinate2D(latitude: lat, longitude: lon)
    mapView.addAnnotation(annotation)


    let request = MKDirectionsRequest()
    request.source = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: lat,longitude: lon)))
    request.destination = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: lat,longitude: lon)))
    request.requestsAlternateRoutes = true
    request.transportType = .automobile

    let directions = MKDirections(request: request)

    directions.calculate {[unowned self] response, error in
        guard let unwrappedResponse = response else { return }

        for route in unwrappedResponse.routes {
            self.mapView.add(route.polyline)
            self.mapView.setVisibleMapRect(route.polyline.boundingMapRect, animated: true)
        }
    }
  }

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
    let renderer = MKPolylineRenderer(polyline: overlay as! MKPolyline)
    renderer.strokeColor = UIColor.blue
    return renderer
}

let regionRadius: CLLocationDistance = 1000
let annotation = MKPointAnnotation()
    func centerMapOnLocation(location: CLLocation) {
    let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate, regionRadius * 2.0, regionRadius * 2.0)
    mapView.setRegion(coordinateRegion, animated: true)
        mapView.showsUserLocation = true

}

您必须重写CLLocationManager.didUpdateLocations,以便在位置管理器检索当前位置时收到通知。您必须应用CLLocationManager委派

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
        let location = locations.last as CLLocation

        let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)        
        let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01))

        self.map.setRegion(region, animated: true)
    }