swift 4 在地图上绘制路线

Draw route on map in swift 4

我想在 swift4 中的两个坐标之间绘制路线。 我正在使用这段代码,

import UIKit
import MapKit

class ViewController: UIViewController, MKMapViewDelegate {

    @IBOutlet weak var myMap: MKMapView!


var myRoute : MKRoute!

override func viewDidLoad() {

    super.viewDidLoad()

    let point1 = MKPointAnnotation()
    let point2 = MKPointAnnotation()

    point1.coordinate = CLLocationCoordinate2DMake(25.0305, 121.5360)
    point1.title = "Taipei"
    point1.subtitle = "Taiwan"
    myMap.addAnnotation(point1)

    point2.coordinate = CLLocationCoordinate2DMake(24.9511, 121.2358)
    point2.title = "Chungli"
    point2.subtitle = "Taiwan"
    myMap.addAnnotation(point2)
    myMap.centerCoordinate = point2.coordinate
    myMap.delegate = self

    //Span of the map

    myMap.setRegion(MKCoordinateRegionMake(point2.coordinate, MKCoordinateSpanMake(0.7,0.7)), animated: true)

    let directionsRequest = MKDirectionsRequest()

    let markTaipei = MKPlacemark(coordinate: CLLocationCoordinate2DMake(point1.coordinate.latitude, point1.coordinate.longitude), addressDictionary: nil)

    let markChungli = MKPlacemark(coordinate: CLLocationCoordinate2DMake(point2.coordinate.latitude, point2.coordinate.longitude), addressDictionary: nil)

    directionsRequest.source = MKMapItem(placemark: markChungli)
    directionsRequest.destination = MKMapItem(placemark: markTaipei)

    directionsRequest.transportType = MKDirectionsTransportType.automobile

    let directions = MKDirections(request: directionsRequest)

    directions.calculate(completionHandler: {

        response, error in

        if error == nil {

            self.myRoute = response!.routes[0] as MKRoute

            self.myMap.add(self.myRoute.polyline)

        }
    })
}

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) ->MKOverlayRenderer {

    let myLineRenderer = MKPolylineRenderer(polyline: myRoute.polyline)

    myLineRenderer.strokeColor = UIColor.red

    myLineRenderer.lineWidth = 3

    return myLineRenderer
}
}

这个代码给了我正确的答案

但是当我改变坐标时它不显示路线。 新坐标是 point1 = 26.9124, 75.7873 point2 = 26.9124, 76.7873

Apple Maps 似乎还不支持印度。 (quora.com/…) 我想如果这是您应用的关键部分,您可能需要考虑 Google 地图

这些新坐标在印度,看起来那里没有方向。我收到一条错误消息,显示 "Error Domain=MKErrorDomain Code=4 "Directions Not Available" UserInfo={NSLocalizedDescription=Directions Not Available, MKErrorGEOError=-8, MKErrorGEOErrorUserInfo={ }, MKErrorGEOTransitIncidentKey=<_GEOTransitRoutingIncidentMessage: 0x60800023df20>, MKDirectionsErrorCode=0, NSLocalizedFailureReason=Directions are这些地点之间不可用。}"

感谢 Rob 的回答。