在swift 3中获取地图方向

Aka*_*eji 2 mkmapview ios swift3

我想从我自己的位置到预定义的位置获取路线.我可以通过在浏览器中打开它来完成它,但它只需要在应用程序中完成.有没有办法绘制路线并将其更新为当前位置的变化?

我正在使用以下代码在浏览器中打开.我希望它只保留在应用程序中

let url = URL(string: "http://maps.apple.com/?saddr=\(lat),\(long)&daddr=\(latgest),\(longgest)&dirflg=d")!

if #available(iOS 10.0, *) {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
else
{
UIApplication.shared.openURL(url)
}
Run Code Online (Sandbox Code Playgroud)

H.N*_*.N. 7

假设你所在的地方是"来源",你想去你的"目的地".试试这个:

import MapKit
import UIKit

class ViewController: UIViewController, MKMapViewDelegate {


@IBOutlet weak var mapview: MKMapView!

override func viewDidLoad() {
    super.viewDidLoad()

    mapview.delegate = self

    let request = MKDirectionsRequest()
    request.source = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: 40.203314, longitude: -8.410257), addressDictionary: nil))
    request.destination = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: 40.112808, longitude: -8.498689), addressDictionary: nil))
    request.requestsAlternateRoutes = false
    request.transportType = .walking

    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 polylineRenderer = MKPolylineRenderer(overlay: overlay)
        polylineRenderer.strokeColor = UIColor.blue
        polylineRenderer.fillColor = UIColor.red
        polylineRenderer.lineWidth = 2
        return polylineRenderer


    }

}
Run Code Online (Sandbox Code Playgroud)

不要忘记在mapview上插座.这对我有用.如果它对您有用,请告诉我们.