Я создаю приложение, которое отображает маршрут проезда на карте с помощью MapKit.Он принимает массив координат и проходит цикл for, в каждом цикле соответствующие координаты (т. Е. [0] и [1] или [7] и [8]) объединяются в отдельный запрос и затем выводятся на карту.
Чтобы обойти ошибку регулирования MapKit, у меня есть таймер, который установлен так, чтобы каждый запрос был разнесен на 1 секунду.
Моя проблема в том, что таймер срабатывает дважды для каждого отдельногоrequest, что приводит к удвоению количества необходимых запросов.
Я использую Xcode 10 и Swift 4, это функция, в которой, как я полагаю, возникает проблема.
func requestDirections(arrays coordinates: [CLLocationCoordinate2D]) {
var dest = 1
let coordinatesArray = coordinates
let end = coordinatesArray.count - 2
var timerDelay:Double = 1
for origin in 0...end {
if dest <= coordinatesArray.count {
let startCoord = MKPlacemark(coordinate: coordinatesArray[origin])
let destCoord = MKPlacemark(coordinate: coordinatesArray[dest])
let request = MKDirections.Request()
request.source = MKMapItem(placemark: startCoord)
request.destination = MKMapItem(placemark: destCoord)
request.transportType = .automobile
request.requestsAlternateRoutes = false
print("Starting timer for \(dest) at \(timerDelay) seconds")
Timer.scheduledTimer(withTimeInterval: timerDelay, repeats: false) { timer in
self.createIndividualDirectionsRequest(request)
print("Timer fired")
}
dest = dest + 1
timerDelay = timerDelay + 1
}
}
}
Я ожидаю, что таймер сработает один раз для каждого цикла, если это произойдет, ожидаемый вывод консоли будет
"Запуск таймера для 'dest' в 'timerDelay' секунд" напечатан 18 раз (или любой другойразмер массива равен)
"Таймер сработал" печатается также 18 раз
В то время как "Запуск таймера для 'dest' в 'timerDelay' секунд" на самом делеВ правильном количестве раз «Таймер срабатывает» печатается вдвое чаще, чем следует.
Большое спасибо за вашу помощь и ваше терпение, я новичок в программировании и изо всех сил пытаюсь обернуть моеОбойдите эту проблему.