Приведенный ниже код позволяет пользователю нажимать на контроллер сегмента, чтобы выбрать предпочтительный способ транспортировки, и возвращает указания от начальной точки до конечной точки.Я могу успешно проложить маршрут для пешеходов и вождения.
@objc func handleDirectionSegmentControl(_ sender: UISegmentedControl){
//transport = MKDirectionsTransportType.automobile
switch sender.selectedSegmentIndex {
case 0:
transport = MKDirectionsTransportType.walking
case 1:
transport = MKDirectionsTransportType.automobile
case 2:
transport = MKDirectionsTransportType.transit
default:
print("Invalid index selected in Segment Controller")
}
func getDirections(){
let request = createDirectionsRequest(from: location)
let directions = MKDirections(request: request)
resetMapView(withNew: directions)
directions.calculate { [unowned self](response, error) in
for route in response.routes {
let steps = route.steps
self._steps = steps
self.mapView.addOverlay
self.mapView.setVisibleMapRect(route.polyline.boundingMapRect, animated: true)
}
}
}
func createDirectionsRequest(from coordinate: CLLocationCoordinate2D)-> MKDirections.Request {
let destinationCoordinate = getCenterLocation(for: mapView).coordinate
let startingLocation = MKPlacemark(coordinate: coordinate)
let destination = MKPlacemark(coordinate: destinationCoordinate)
let request = MKDirections.Request()
request.source = MKMapItem(placemark: startingLocation)
request.destination = MKMapItem(placemark: destination)
request.transportType = transport //From Segment Controller
request.requestsAlternateRoutes = true
return request
}
Я использую точки отправления и назначения в Нью-Йорке, в котором определенно есть варианты общественного транспорта между пунктами начала / окончания.На моем iPhone (с Apple Maps) функция яблочных карт позволяет отображать параметры общественного транспорта между теми же начальными / конечными точками, в которых происходит сбой моего приложения.
Поскольку маршруты движения / ходьбы успешно получены, ямне интересно, есть ли дополнительная функция, которую мне нужно реализовать, чтобы заставить работать .transit.