You are using a browser that is no longer supported. Please use the latest version of Google Chrome, Mozilla Firefox, Apple Safari, or Microsoft Edge. For more information please see the System Requirements.
Skip To ContentArcGIS for DevelopersSign In Dashboard

Unsupported browser

You are using a browser that is not supported. JavaScript API works on the latest versions of Google Chrome, Mozilla Firefox, Apple Safari, or Microsoft Edge. Use one of these browsers and provide your feedback through GeoNet, the Esri Community.

  • {}
  • Firefox
  • Safari
  • undefined

Note: Support for 3D on mobile devices may vary, view the system requirements for more information.

This sample demonstrates the simplest use of the RouteTask 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 the Route Task, you set up RouteParameters, such as the stops, then call the RouteTask.solve() method when you're ready to find the route.

How it works

This sample requires a proxy to handle communications with the routing service. This example uses an ArcGIS Online hosted proxy. You can either remove it and log in once prompted, or you can set up your own service proxy.

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 RouteTask.solve function and then pass the RouteParameter to the solve function.

function addStop(event) {
  var stop = new Graphic(event.mapPoint, stopSymbol);

  if (routeParams.stops.features.length >= 2) {
    lastStop = routeParams.stops.features.splice(0, 1)[0];

Then solve method is called to perform the task synchronously. The solve method returns a promise which can be used with the .then() method to define a callback, in this case 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

function showRoute(data) {
  var routeResult = data.routeResults[0].route;
  routeResult.symbol = routeSymbol;

Sample search results