Могу ли я получить приблизительное время в пути из направлений, которые у меня уже есть на карте? - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь отобразить приблизительное время в пути к местоположению из текущего местоположения пользователя с указаниями, уже появляющимися на карте. Мне интересно, возможно ли это, поскольку при поиске ничего не появляется в Интернете. Если это возможно, Swift будет лучше, чем Objective-C.

1 Ответ

0 голосов
/ 09 апреля 2019

Вы уже показываете направление на карте, и вы должны использовать карты Apple.Я думаю, что вы используете MKDirectionsRequest, чтобы получить и показать направления.Используя MKDirectionsRequest, вы можете найти направления и возможные маршруты.Вы можете указать, какой тип направлений требуется (автомобильный, транзитный, пешеходный), а из route вы можете получить расчетное время в пути.Для вашего удобства я добавляю полный код.

        let request = MKDirectionsRequest()
        request.source = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: startLocation?.latitude, longitude: startLocation?.longitude), addressDictionary: nil))
        request.destination = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: endLocation?.latitude, longitude: endLocation?.longitude), addressDictionary: nil))
        request.requestsAlternateRoutes = true // if you want multiple possible routes
        request.transportType = .automobile  // will be good for cars

Теперь проложите маршрут

        let directions = MKDirections(request: request)
        directions.calculate {(response, error) -> Void in

            guard let response = response else {
                if let error = error {
                    print("Error: \(error)")
                }
                return
            }

          // Lets Get the first suggested route and its travel time

           if response.routes.count > 0 {
                let route = response.routes[0]
                print(route.expectedTravelTime) // it will be in seconds
                // you can show this time in any of your UILabel or whatever you want. 
            }
        }
...