Свифт узнай кратчайший маршрут
Я новичок в быстрой. У меня есть вопросы по поводу карты в 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) {
.....
}