Свифт узнай кратчайший маршрут

Я новичок в быстрой. У меня есть вопросы по поводу карты в IOS.

Допустим, мне нужно выбрать одно место в десяти местах, чтобы перейти от моего текущего местоположения. Я хочу, чтобы приложение сравнило десять различных маршрутов и выяснило кратчайший маршрут, а затем отобразил маршрут рендеринга на карте с помощью MapKit.

Однако странно, что последовательность не в порядке в массиве, в котором хранятся десять расстояний, каждый раз, когда она показывает разные маршруты, как случайность.

func getDist(){

    var Distancess = [Double]() //Array for store distances

    let sourceCoordination = manager.location?.coordinate
    let sourceItem = MKMapItem(placemark: MKPlacemark(coordinate: sourceCoordination!, addressDictionary: nil))

    let request = MKDirectionsRequest() //create a direction request object
    request.source = sourceItem //this is the source location mapItem object
    request.transportType = MKDirectionsTransportType.automobile //define the transportation method


    for i in 0...parkLocations.count - 1 {

        let destCoordination = CLLocationCoordinate2DMake(parkLocations[i].latitude, parkLocations[i].longitude)
        let destItem = MKMapItem(placemark: MKPlacemark(coordinate: destCoordination, addressDictionary: nil))

        request.destination = destItem //this is the destination location mapItem object

        let directions = MKDirections(request: request) //request directions

        directions.calculate { (response, error) in
            guard let response = response else {
                print(error.debugDescription)
                return
            }

            let route = response.routes[0]
            let dist = route.distance

            Distancess.append(dist)

            if Distancess.count == parkLocations.count {

               let index = Distancess.index(of: Distancess.min()!)

               self.showRoute(parkLocations[index!].latitude, parkLocations[index!].longitude)

                }
            }

    }

}

func showRoute(_ destLatitude: Double, _ destLongitude: Double) {
.....
}

0 ответов

Другие вопросы по тегам