Directions
require(["esri/widgets/Directions"], function(Directions) { /* code goes here */ });
esri/widgets/Directions
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. 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.
Any types of customizations made to the underlying functionality of the widget should be handled via its viewModel property.
Known Limitations
The Directions widget is currently in its beta release. It should be noted that it is not yet at full parity with the functionality provided in the 3.x version of the Directions widget and is subject to change.
- 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 | |
Boolean | When | more details | Widget | |
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 | |
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.
- Since: ArcGIS API for JavaScript 4.7
The name of the class. The declared class name is formatted as
esri.folder.className
.
When
true
, this property indicates whether the widget has been destroyed.
- 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); };
- iconClassStringreadonlySince: 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.
- labelStringreadonlySince: ArcGIS API for JavaScript 4.7
The widget's default label.
- maxStopsNumber
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"
- routeSymbolSimpleLineSymbol
Defines the symbol used to draw the route on the map.
- searchProperties
Controls the default properties used when searching. Note that the default
searchProperties
differ slightly from the Search widget.- Default Value:null
- stopSymbolsObject
The default stop symbols used to display locations between the origin and final destination.
The view from which the widget will operate.
- viewModelautocast
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 | ||
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.Prior to version 4.7, there were various approaches towards setting CSS classes. These were dependent upon variables, such as whether the classes were:
- a single static class,
- multiple static classes, or
- dynamic classes.
This helper method takes all of these approaches into account and simplifies it to use one single pattern to accommodate these multiple approaches.
Parameter:repeatable The class names.
Returns:Type Description String The computed class name. 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.
- emit(type, event)inheritedSince: ArcGIS API for JavaScript 4.5
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 ObjectThe event payload.
- 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:type StringThe name of event 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.Property Type Description remove Function When called, removes the listener from the event. - See also:
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:
- optionalactiveSourceIndex Number
Number index indicating the current selected source.
optionalallPlaceholder StringString value used as a hint for input text when searching on multiple sources.
optionalautoNavigate BooleanDefault Value:trueIndicates whether to automatically navigate to the selected result once selected.
optionalautoSelect BooleanIndicates whether to automatically select and zoom to the first geocoded result.
optionalmaxResults NumberDefault Value:6Indicates the maximum number of search results to return.
optionalmaxSuggestions NumberDefault Value:6Indicates the maximum number of suggestions to return for the widget's input.
optionalminSuggestCharacters NumberDefault Value:1Indicates the minimum number of characters required before querying for a suggestion.
optionalpopupEnabled BooleanDefault Value:falseIndicates whether to display a Popup when a selected result is clicked.
optionalpopupOpenOnSelect BooleanDefault Value:trueIndicates whether to show the Popup when a result is selected.
optionalpopupTemplate PopupTemplateA customized PopupTemplate for the selected feature.
optionalresultGraphicEnabled BooleanDefault Value:falseIndicates whether to show a graphic on the map for the selected source.
optionalsearchAllEnabled BooleanIndicates whether to display the option to search all sources.
optionalsearchTerm StringThe value of the search box input text string.
optionalsources Collection<(FeatureLayerSource|LocatorSource)>Specifies the sources to search in the view.
optionalsuggestionsEnabled BooleanDefault Value:trueIndicates whether to display suggestions as the user enters input text in the widget.
optional The view of the widget.
optionalviewModel SearchViewModelThe Search widget's view model.