Display directions for a route between two points.
Use case
Find routes with driving directions between any number of locations. You might use the ArcGIS platform to create a custom network for routing on a private roads.
How to use the sample
For simplicity, the sample comes loaded with a start and end stop. You can click on the Find Route button to display a route between these stops. Once the route is generated, turn-by-turn directions are shown in a list.
How it works
- Create a
RouteTask
using a URL to an online route service. - Generate default
RouteParameters
usingrouteTask.CreateDefaultParametersAsync()
. - Set
returnStops
andreturnDirections
on the parameters to true. - Add
Stop
s to the parametersstops
collection for each destination. - Solve the route using
routeTask.SolveAsync(routeParameters)
to get aRouteResult
. - Iterate through the result's
Route
s. To display the route, create a graphic using the geometry fromroute.RouteGeometry
. To display directions, userouteDirectionManeuvers
, and for eachDirectionManeuver
, displayDirectionManeuver.DirectionText
.
Relevant API
- DirectionManeuver
- Route
- RouteParameters
- RouteResult
- RouteTask
- Stop
Tags
directions, driving, navigation, network, network analysis, route, routing, shortest path, turn-by-turn
Sample Code
<UserControl
x:Class="ArcGIS.UWP.Samples.FindRoute.FindRoute"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:esriUI="using:Esri.ArcGISRuntime.UI.Controls">
<Grid>
<esriUI:MapView x:Name="MyMapView" />
<Border Style="{StaticResource BorderStyle}">
<StackPanel>
<TextBlock Text="Route directions:"
Margin="0,0,0,5"
FontWeight="SemiBold" />
<ListView x:Name="DirectionsListBox"
HorizontalAlignment="Stretch"
Height="300">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding DirectionText}" TextWrapping="Wrap" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Button Content="Solve route"
HorizontalAlignment="Stretch"
Margin="0,5"
Click="SolveRouteClick" />
<Button Content="Reset"
HorizontalAlignment="Stretch"
Click="ResetClick" />
</StackPanel>
</Border>
</Grid>
</UserControl>