在Swift 3中获取地图方向

3
我想从我的当前位置到预定位置获取路线指引。我可以通过在浏览器中打开它来实现,但必须在应用程序中完成。是否有一种方法可以绘制路线并随着当前位置的更改而更新路线?
我正在使用以下代码在浏览器中打开。我希望它仅保留在应用程序中。
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)
}
2个回答

8

假设您所在的地方是“源”,您想去的地方是“目的地”。请尝试以下操作:

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


    }

}

别忘了将地图视图 Outlet 化。

这对我有用。

如果对你也有用,请告诉我们。


0

谢谢您的回复,但这只显示了折线,我想要实时跟踪方向,例如如果当前位置向前移动到该地址,则显示转弯方向并给出指示。 - Akash Soneji

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接