The Directions Widget provides a way to build driving and walking directions using ArcGIS Online and custom
Network Analysis Route services. Similar to how the RouteTask works, this widget
generates a route finding a least-cost path between multiple points using a specified network. When searching
for an address, the location of the points used to navigate depends on the locationType
of the Search properties.
The default value will be "street"
for any locator source that does not define a locationType
. The
resulting directions are displayed with detailed turn-by-turn instructions.
The widget wraps pre-built search functionality directly within it so all you need to do is reference the widget within your application. The routing service defaults to the Esri World Route service. This is a subscription based service available through ArcGIS Online. You can use this default or specify your own ArcGIS Server route service. Please see the routeServiceUrl property.
The Clear route
button calls the reset() method, which
clears all the input stops and results in the widget and in the map.
Any types of customizations made to the underlying functionality of the widget should be handled via its viewModel property.
- See also:
var directionsWidget = new Directions({
view: view
});
// Adds the Directions widget below other elements in
// the top right corner of the view
view.ui.add(directionsWidget, {
position: "top-right",
index: 2
});
Constructors
-
new Directions(properties)
-
Parameter:properties Objectoptional
See the properties for a list of all the properties that may be passed into the constructor.
Property Overview
Name | Type | Summary | Class | |
---|---|---|---|---|
String|HTMLElement | The ID or node representing the DOM element containing the widget. more details | more details | Widget | |
String | The name of the class. more details | more details | Accessor | |
GoToOverride | This function provides the ability to override either the MapView goTo() or SceneView goTo() methods. more details | more details | Directions | |
String | The widget's default CSS icon class. more details | more details | Directions | |
String | The unique ID assigned to the widget when the widget is created. more details | more details | Widget | |
String | The widget's default label. more details | more details | Directions | |
Object | The most recent route result. more details | more details | Directions | |
Number | The maximum number of stops allowed for routing. more details | more details | Directions | |
String | The URL of the REST endpoint of the Route service. more details | more details | Directions | |
SimpleLineSymbol | Defines the symbol used to draw the route on the map. more details | more details | Directions | |
SearchProperties | Controls the default properties used when searching. more details | more details | Directions | |
Object | The default stop symbols used to display locations between the origin and final destination. more details | more details | Directions | |
MapView|SceneView | The view from which the widget will operate. more details | more details | Directions | |
DirectionsViewModel | The view model for this widget. more details | more details | Directions |
Property Details
-
-
The ID or node representing the DOM element containing the widget. This property can only be set once. The following examples are all valid use cases when working with widgets.
Examples:// Create the HTML div element programmatically at runtime and set to the widget's container const basemapGallery = new BasemapGallery({ view: view, container: document.createElement("div") }); // Add the widget to the top-right corner of the view view.ui.add(basemapGallery, { position: "top-right" });
// Specify an already-defined HTML div element in the widget's container const basemapGallery = new BasemapGallery({ view: view, container: basemapGalleryDiv }); // Add the widget to the top-right corner of the view view.ui.add(basemapGallery, { position: "top-right" }); // HTML markup <body> <div id="viewDiv"></div> <div id="basemapGalleryDiv"></div> </body>
// Specify the widget while adding to the view's UI const basemapGallery = new BasemapGallery({ view: view }); // Add the widget to the top-right corner of the view view.ui.add(basemapGallery, { position: "top-right" });
-
Since: ArcGIS API for JavaScript 4.7
-
The name of the class. The declared class name is formatted as
esri.folder.className
.
-
goToOverride GoToOverrideSince: ArcGIS API for JavaScript 4.8
-
This function provides the ability to override either the MapView goTo() or SceneView goTo() methods.
Example:// The following snippet uses the Search widget but can be applied to any // widgets that support the goToOverride property. search.goToOverride = function(view, goToParams) { goToParams.options.duration = updatedDuration; return view.goTo(goToParams.target, goToParams.options); };
-
iconClass StringSince: ArcGIS API for JavaScript 4.7
-
The widget's default CSS icon class.
-
The unique ID assigned to the widget when the widget is created. If not set by the developer, it will default to the container ID, or if that is not present then it will be automatically generated.
-
label StringSince: ArcGIS API for JavaScript 4.7
-
The widget's default label.
-
lastRoute ObjectreadonlySince: ArcGIS API for JavaScript 4.12
-
The most recent route result. Returns an object containing properties for any barriers used when generating the route, messages that may arise when solving the route, and finally an array of returned RouteResults.
- Properties:
-
Array of graphics representing the point barriers. For a list of properties returned for each barrier, see the barriers help documentation.
An array of messages serialized to JSON.
- Specification:
-
description String
A descriptive message of the returned mesage.
type NumberNumber indicating the message type returned from the service. This number correlates to one of the possible values listed below.
Number Value 0 informative 1 process-definition 2 process-start 3 process-stop 50 warning 100 error 101 empty 200 abort
Array of graphics representing the polygon barriers. For a list of properties returned for each barrier, see the barriers help documentation.
Array of graphics representing the polygon barriers. For a list of properties returned for each barrier, see the barriers help documentation.
routeResults RouteResultAn array of RouteResults.
- Default Value:null
-
maxStops Number
-
The maximum number of stops allowed for routing.
- Default Value:50
-
The URL of the REST endpoint of the Route service.
- Default Value:"https://route.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World"
-
routeSymbol SimpleLineSymbol
-
Defines the symbol used to draw the route on the map.
-
searchProperties SearchProperties
-
Controls the default properties used when searching. Note that the default
searchProperties
differ slightly from the Search widget.- Default Value:null
-
stopSymbols Object
-
The default stop symbols used to display locations between the origin and final destination.
-
The view from which the widget will operate.
-
viewModel DirectionsViewModelautocast
-
The view model for this widget. This is a class that contains all the logic (properties and methods) that controls this widget's behavior. See the DirectionsViewModel class to access all properties and methods on the widget.
Method Overview
Name | Return Type | Summary | Class | |
---|---|---|---|---|
String | A utility method used for building the value for a widget's | more details | Widget | |
Destroys the widget instance. more details | more details | Widget | ||
Boolean | Emits an event on the instance. more details | more details | Widget | |
Promise<RouteResult> | Calculate the route to the input locations and display the list of directions. more details | more details | Directions | |
Boolean | Indicates whether there is an event listener on the instance that matches the provided event name. more details | more details | Widget | |
Object | Registers an event handler on the instance. more details | more details | Widget | |
Widget teardown helper. more details | more details | Widget | ||
This method is primarily used by developers when implementing custom widgets. more details | more details | Widget | ||
Object | This method is primarily used by developers when implementing custom widgets. more details | more details | Widget | |
Renders widget to the DOM immediately. more details | more details | Widget | ||
This method is primarily used by developers when implementing custom widgets. more details | more details | Widget | ||
Zoom so that the full route is displayed within the current map extent. more details | more details | Directions |
Method Details
-
Since: ArcGIS API for JavaScript 4.7
-
A utility method used for building the value for a widget's
class
property. This aids in simplifying CSS class setup.Parameter:repeatable The class names.
Returns:Type Description String The computed class name. - See also:
Example:// .tsx syntax showing how to set CSS classes while rendering the widget render() { const dynamicIconClasses = { [CSS.myIcon]: this.showIcon, [CSS.greyIcon]: !this.showIcon }; return ( <div class={classes(CSS.root, CSS.mixin, dynamicIconClasses)} /> ); }
-
destroy()inherited
-
Destroys the widget instance.
-
Emits an event on the instance. This method should only be used when creating subclasses of this class.
Parameters:type StringThe name of the event.
event ObjectoptionalThe event payload.
Returns:Type Description Boolean true
if a listener was notified
-
getDirections(){Promise<RouteResult>}
-
Calculate the route to the input locations and display the list of directions.
Returns:Type Description Promise<RouteResult> When resolved, returns an object containing the calculated RouteResult.
-
Indicates whether there is an event listener on the instance that matches the provided event name.
Parameter:type StringThe name of the event.
Returns:Type Description Boolean Returns true if the class supports the input event.
-
Registers an event handler on the instance. Call this method to hook an event with a listener.
Parameters:A event type, or an array of event types, to listen for.
listener FunctionThe function to call when the event is fired.
Returns:Type Description Object Returns an event handler with a remove()
method that can be called to stop listening for the event(s).Property Type Description remove Function When called, removes the listener from the event. Example:view.on("click", function(event){ // event is the event handle returned after the event fires. console.log(event.mapPoint); });
-
own(handles)inherited
-
Widget teardown helper. Any handles added to it will be automatically removed when the widget is destroyed.
Parameter:handles WatchHandle|WatchHandle[]Handles marked for removal once the widget is destroyed.
-
postInitialize()inherited
-
This method is primarily used by developers when implementing custom widgets. Executes after widget is ready for rendering.
-
This method is primarily used by developers when implementing custom widgets. It must be implemented by subclasses for rendering.
Returns:Type Description Object The rendered virtual node.
-
renderNow()inherited
-
Renders widget to the DOM immediately.
-
scheduleRender()inherited
-
This method is primarily used by developers when implementing custom widgets. Schedules widget rendering. This method is useful for changes affecting the UI.
-
zoomToRoute()
-
Zoom so that the full route is displayed within the current map extent.
Type Definitions
-
SearchProperties
-
Configurable Search properties of the widget.
- Properties:
-
activeSourceIndex Number
Number index indicating the current selected source.
allPlaceholder StringString value used as a hint for input text when searching on multiple sources.
autoNavigate BooleanDefault Value:trueIndicates whether to automatically navigate to the selected result once selected.
autoSelect BooleanIndicates whether to automatically select and zoom to the first geocoded result.
locationType StringDefine the type of location, either
"street"
or"rooftop"
. The default value will be"street"
for any locator source that does not define a locationType.maxResults NumberDefault Value:6Indicates the maximum number of search results to return.
maxSuggestions NumberDefault Value:6Indicates the maximum number of suggestions to return for the widget's input.
minSuggestCharacters NumberDefault Value:1Indicates the minimum number of characters required before querying for a suggestion.
popupEnabled BooleanDefault Value:falseIndicates whether to display a Popup when a selected result is clicked.
popupOpenOnSelect BooleanDefault Value:trueIndicates whether to show the Popup when a result is selected.
popupTemplate PopupTemplateA customized PopupTemplate for the selected feature.
resultGraphicEnabled BooleanDefault Value:falseIndicates whether to show a graphic on the map for the selected source.
searchAllEnabled BooleanIndicates whether to display the option to search all sources.
searchTerm StringThe value of the search box input text string.
sources Collection<(LayerSearchSource|LocatorSearchSource)>Specifies the sources to search in the view.
suggestionsEnabled BooleanDefault Value:trueIndicates whether to display suggestions as the user enters input text in the widget.
optional The view of the widget.
viewModel SearchViewModelThe Search widget's view model.