2016-01-19 3 views
3

Я рисую линию между многими точками, которые являются начальной точкой, точками пути и конечными точками, и помещают все их в массив и вычисляют маршрут. Во-первых, он рисует это хорошо, но если я вызову тот же самый метод во второй раз, я получу ошибку ниже, и это происходит, когда я выбираю длинный маршрут между городами, но если я назову его много раз в городе (короткий), он отлично работает ,Получение маршрута с MKMapView и MKRoute

Так что, пожалуйста, почему я получаю ошибку на длинном пути, где будет моя проблема?

«Ошибка Доменные = MKErrorDomain Code = 3 "Направления Not Available" UserInfo = {информация NSLocalizedFailureReason = Маршрут не доступен в данный момент., MKErrorGEOError = -4, MKDirectionsErrorCode = 2, NSLocalizedDescription = Directions Не Доступный»

func calculateRoute(wayPoint: [MKMapItem]) { 

    let request:MKDirectionsRequest = MKDirectionsRequest() 
    var allPointsArray: [MKMapItem] = [] 
    var directions: MKDirections = MKDirections(request: request) 
    var directionsResponse: MKDirectionsResponse = MKDirectionsResponse() 
    var route: MKRoute = MKRoute() 

    for points in wayPoint{ 
     allPointsArray.append(points) 
    } 

    for var i = 0; i < allPointsArray.count - 1; ++i { 

     request.source = allPointsArray[i] 
     request.destination = allPointsArray[i+1] 
     request.transportType = MKDirectionsTransportType.Automobile 
     request.requestsAlternateRoutes = false 

     directions = MKDirections(request: request) 
     directions.calculateDirectionsWithCompletionHandler { (response: MKDirectionsResponse?, error: NSError?) -> Void in 

      if error == nil { 

       directionsResponse = response! 
       route = directionsResponse.routes[0] 
       self.mapView.addOverlay(route.polyline, level: MKOverlayLevel.AboveRoads) 

      }else { 
       print(error) 
      } 
     } 
    } 
} 

ответ

2

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

+0

Знаете ли вы предел? Это где-то задокументировано? – Hons