Route

This sample demonstrates the simplest use of route for finding a route between two points. Click the map to add stops to the route. When you've added two stops a route will be calculated. Adding subsequent stops extends the route.

When working with route, you set up RouteParameters, such as the stops, then call the route.solve() method when you're ready to find the route.

How it works

The routing service requires a token for authentication. This sample uses an API Key to authenticate. You can either replace it with your own API Key, or remove it and log in once prompted. Alternatively, you can use another authentication method to access the routing service.

The apiKey is defined in the RouteParameters to access the routing service.

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
        // Setup the route parameters
        const routeParams = new RouteParameters({
          // An authorization string used to access the routing service
          apiKey: "YOUR_ACCESS_TOKEN",
          stops: new FeatureSet(),
          outSpatialReference: {
            // autocasts as new SpatialReference()
            wkid: 3857
          }
        });

When the map is clicked, an event listener calls the function addStop(), which adds a SimpleMarkerSymbol at the location of the click as a stop. The function also add the point as stop in Route Parameter and check if 2 or more exists, route is solved by calling route.solve function and then pass the RouteParameter to the solve function.

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
function addStop(event) {
  const stop = new Graphic(event.mapPoint, stopSymbol);
  graphicsLayer.add(stop);
  routeParams.stops.features.push(stop);

  if (routeParams.stops.features.length >= 2) {
    route.solve(routeUrl, routeParams).then(showRoute);
    lastStop = routeParams.stops.features.splice(0, 1)[0];
  }
}

The solve method returns a promise which can be used with the .then() method to define a callback, in this case showRoute.

Use dark colors for code blocksCopy
1
route.solve(routeUrl, routeParams).then(showRoute);

The showRoute callback function obtains the routeResult stored within the result object, and the apply the SimpleLineSymbol for the route result symbology, then add the RouteResult to the map by adding it to graphic layer.

Use dark colors for code blocksCopy
1
2
3
4
5
function showRoute(data) {
  const routeResult = data.routeResults[0].route;
  routeResult.symbol = routeSymbol;
  graphicsLayer.add(routeResult);
}

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.