private async void AssignRouteToResponder(ResponderModel responder, RouteModel defaultRoute) { if (defaultRoute.RoutePoints.Any()) { var routeInstance = new Route <ResponderModel>(defaultRoute.RoutePoints.ToArray()); routeInstance.Element = responder; // calculate route from the actual point to the route start point Geoposition responderPosition = PushpinManager.GetResponderPosition(responder); IEnumerable <Geoposition> routeToStartPosition = await RouteManager.CalculateRoute(responderPosition, routeInstance.RoutePositions.First()); if (!routeToStartPosition.Any()) { // if routes api dont return any points, route directly to the position. routeToStartPosition = new [] { responderPosition, routeInstance.RoutePositions.First() }; } routeInstance.AddRouteToStartPoint(routeToStartPosition); _routeUpdater.AddRoute(routeInstance); var routeIndex = _predefinedRoutes.IndexOf(defaultRoute); _responderRoutes[responder.Id] = routeIndex; } else { System.Diagnostics.Debug.WriteLine("FullRoute has zero elements, route could not be started"); } }