Я знаю, что это старый вопрос, но в настоящее время вы также можете использовать MapKit MKDirections
. Например, вот процедура поиска некоторых searchString
, а затем добавления указаний к первому попаданию в вид карты:
let request = MKLocalSearch.Request()
request.region = mapView.region
request.naturalLanguageQuery = searchString
let search = MKLocalSearch(request: request)
search.start { response, _ in
guard let mapItem = response?.mapItems.first else { return }
let request = MKDirections.Request()
request.source = MKMapItem.forCurrentLocation()
request.destination = mapItem
let directions = MKDirections(request: request)
directions.calculate { response, error in
guard let routes = response?.routes else { return }
let overlays = routes.map { $0.polyline }
self.mapView.addOverlays(overlays)
}
}
Чтобы убедиться, что это отображается на вашей карте, вы должны установить свойство delegate
вида карты (в IB или программно), а затем реализовать mapView(_:rendererFor:)
:
extension MapViewController: MKMapViewDelegate {
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
let renderer = MKPolylineRenderer(overlay: overlay)
renderer.strokeColor = .init(red: 0, green: 0, blue: 1, alpha: 0.7)
return renderer
}
}