обходной путь: Создать таймер и решить, показывать/не показывать маршрут, когда calculateDirectionsWithCompletionHandler завершается в соответствии с текущим значением вашего таймера.
Я не знаю, почему вам нужен тайм-аут, но в моем случае я имел представление коллекции и когда пользователь прокручивает я показать маршрут к текущему элементу карты.
и у меня было несколько маршрутов на карте, когда пользователь прокручивался так быстро.
Что я реализовать использует таймер перед выполнением запроса маршрута (так что если пользователь прокручивает поиска маршрута не начнется сразу же начнется во времени, но будет отменен, если пользователь переключается на другой объект на карте)
То, что также может быть реализовано, - это отменить MKDirectionsRequest. Но это не работает, если isCalculating = истина:
// Any calls to -calculateDirectionsWithCompletionHandler: or calculateETAWithCompletionHandler
// while -[MKDirections isCalculating] will fail. completionHandler will be called on the main queue
public func calculateDirectionsWithCompletionHandler(completionHandler: MKDirectionsHandler)
public func calculateETAWithCompletionHandler(completionHandler: MKETAHandler)
public func cancel()
Так что, если вы хотите, чтобы стремиться убить обработчик события, когда ответ есть, что вы могли бы сделать, это проверить последний пункт
if let _ = response where (mapItem == self?.latestMapItem) {
self?.showRoute(response!, itemLocation: mapItem)
self?.routeInfoView.hidden = false
}