public async Task SolveRoute() { if (_stopGraphicsOverlay.Graphics.Count < 2) { return; } try { progress.Visibility = Visibility.Visible; _routeParams.SetStops(_stopGraphicsOverlay.Graphics); _routeParams.SetPointBarriers(_barrierGraphicsOverlay.Graphics); _routeParams.OutSpatialReference = MyMapView.SpatialReference; RouteResult routeResult = await _routeTask.SolveAsync(_routeParams); if (routeResult.Routes.Count > 0) { _routeGraphicsOverlay.Graphics.Clear(); var route = routeResult.Routes.First().RouteFeature; _routeGraphicsOverlay.Graphics.Add(new Graphic(route.Geometry)); } } catch (AggregateException ex) { var innermostExceptions = ex.Flatten().InnerExceptions; if (innermostExceptions != null && innermostExceptions.Count > 0) { MessageBox.Show(innermostExceptions[0].Message); } else { MessageBox.Show(ex.Message); } } catch (System.Exception ex) { MessageBox.Show("Error: " + ex.Message); } finally { progress.Visibility = Visibility.Collapsed; } }
private async void OnSolveRouteClicked(object sender, RoutedEventArgs e) { var stopsLayer = mapView1.Map.Layers["MyStopsGraphicsLayer"] as GraphicsLayer; var barriersLayer = mapView1.Map.Layers["MyBarriersGraphicsLayer"] as GraphicsLayer; if (stopsLayer.Graphics.Count > 1) { try { OnlineRouteTask routeTask = new OnlineRouteTask (new Uri("http://sampleserver6.arcgisonline.com/arcgis/rest/services/NetworkAnalysis/SanDiego/NAServer/Route")); RouteParameters routeParams = await routeTask.GetDefaultParametersAsync(); routeParams.SetStops(stopsLayer.Graphics); routeParams.UseTimeWindows = false; routeParams.OutSpatialReference = mapView1.SpatialReference; routeParams.SetPointBarriers(barriersLayer.Graphics); routeParams.OutputGeometryPrecision = 1; routeParams.DirectionsLengthUnit = LinearUnits.Miles; routeParams.DirectionsLanguage = new CultureInfo("en-Us"); // CultureInfo.CurrentCulture; var result = await routeTask.SolveAsync(routeParams); if (result != null) { GraphicsLayer routeLayer = mapView1.Map.Layers["MyRouteGraphicsLayer"] as GraphicsLayer; routeLayer.Graphics.Clear(); foreach (var route in result.Routes) { routeLayer.Graphics.Add(route.RouteFeature as Graphic); } } } catch (Exception ex) { var _x = new MessageDialog(ex.Message, "Sample Error").ShowAsync(); } } }
/// <summary> /// Solves routing problem for given input parameters /// </summary> /// <returns></returns> public async Task <RouteUtilityResult> Solve() { routeTask = (routeTask) ?? await RouteTask.CreateAsync(RouteServiceUri); var routInfo = routeTask.RouteTaskInfo; // get the default route parameters routeParams = (routeParams) ?? await routeTask.CreateDefaultParametersAsync(); // explicitly set values for some params // routeParams.ReturnDirections = true; // routeParams.ReturnRoutes = true; routeParams.OutputSpatialReference = SpatialRef; routeParams.SetStops(stopPoints); routeParams.SetPointBarriers(pointBarriers); var routeResult = await routeTask.SolveRouteAsync(routeParams); return(new RouteUtilityResult { RouteName = routeResult.Routes[0].RouteName, TotalTime = routeResult.Routes[0].TotalTime }); }