/// <summary> /// Handles any unspecified OnGet requests from user. Currently returns all details about the current order using both the Java API and the Google API in series. NOT in paralel. /// </summary> /// <param name="orderNumber"></param> public void OnGet(string orderNumber) { //// getting saved identity token //var identityToken = Task.Run(() => HttpContext.GetTokenAsync(OpenIdConnectParameterNames.IdToken)).Result; UpdateUserClaimsFromIdentityServer4(); urlGetOrder = "http://localhost:8080/server_war_exploded/root/api/order/"; UriGetOrder = new Uri(new Uri(urlGetOrder), orderNumber); orderService = new OrderService(); Task <Order> taskOrder = orderService.GetOrderByOrderNumberAsync(UriGetOrder); taskOrder.Wait(); Order = taskOrder.Result; urlGoogleDistanceCalculation = $"https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial" + "&origins=" + $"{Order.pickUpAddress.city.Replace(" ", "+")}," + $"{Order.pickUpAddress.zipCode.Replace(" ", "+")}," + $"{Order.pickUpAddress.country.Replace(" ", "+")}," + $"{Order.pickUpAddress.street.Replace(" ", "+")}" + "&destinations=" + $"{Order.dropOffAddress.city.Replace(" ", "+")}," + $"{Order.dropOffAddress.zipCode.Replace(" ", "+")}," + $"{Order.dropOffAddress.country.Replace(" ", "+")}," + $"{Order.dropOffAddress.street.Replace(" ", "+")}" + "&key=AIzaSyCbrS4DNvvkVu_i4iEAWM5T_5K2H0Ck3_Y&"; Task <GoogleRoute> taskGoogleRoute = orderService.GetRouteInformationFromGoogleAPI(urlGoogleDistanceCalculation); taskGoogleRoute.Wait(); GoogleRoute = taskGoogleRoute.Result; }
/// <summary> /// GET request to the Google Maps Distance Matrix API returning distance and travel time information from specified point A to B /// </summary> /// <param name="urlWithAPIKey">Google API fully formed URL with request details</param> /// <returns></returns> public async Task <GoogleRoute> GetRouteInformationFromGoogleAPI(string urlWithAPIKey) { Uri uri = new Uri(urlWithAPIKey); GoogleRoute googleRoute = null; string jsonString = await GetJsonStringAsync(uri); googleRoute = JsonConvert.DeserializeObject <GoogleRoute>(jsonString); return(googleRoute); }
public EventDetailViewModel(PlannedEvent pEvent, GoogleRoute rt) { currentEvent = pEvent; route = rt; EventTitle = pEvent.EventName; EventTime = pEvent.EventTime; StartPos = route.getStartLocation(); EndPos = route.getEndLocation(); RemainingTime = pEvent.RemainingTime; RequiredTime = pEvent.RequiredTime; stepModels = new ObservableCollection <StepDisplayModel>(); loadRouteDetails(); loadStatistics(); }
private void drawPolylines(GoogleRoute route) { Position start = viewModel.currentEvent.startPos, end = viewModel.currentEvent.endPos; var polyLine = new Xamarin.Forms.GoogleMaps.Polyline(); polyLine.StrokeColor = Color.Orange; polyLine.StrokeWidth = 10f; polyLine.Positions.Add(start); foreach (Step step in route.legs[0].steps) { string polyStr = step.polyline.points; List <Xamarin.Essentials.Location> polyPoints = Configs.DecodePolylinePoints(polyStr); foreach (var loc in polyPoints) { polyLine.Positions.Add(new Position(loc.Latitude, loc.Longitude)); } } polyLine.Positions.Add(end); Thread.Sleep(500); EventDetailMap.Polylines.Add(polyLine); }
public EventDetailPage(PlannedEvent pEvent, GoogleRoute route) { InitializeComponent(); viewModel = new EventDetailViewModel(pEvent, route); BindingContext = viewModel; StepList.ItemsSource = viewModel.stepModels; AccuracyList.ItemsSource = viewModel.routeStatList; AccuracyList.ItemTapped += (object sender, ItemTappedEventArgs e) => { if (e.Item == null) { return; } Task.Delay(500); if (sender is ListView lv) { lv.SelectedItem = null; } Database.currentAccModel = (e.Item as EventDetailViewModel.StatisticModel).AccuracyPerformances; loadStatisticsDetail(); }; StepList.ItemTapped += (object sender, ItemTappedEventArgs e) => { if (e.Item == null) { return; } Task.Delay(500); if (sender is ListView lv) { lv.SelectedItem = null; } }; initLocation(pEvent); drawPolylines(route); }