<iframe src="https://developers.devsite.google/frame/maps/documentation/javascript/reference/directions_3eb6142d38040232a654e889c52a3a181263ad1f79def8eb0931e3edd976e603.frame" class="framebox inherit-locale redirect-iframe" allow="clipboard-write https://developers.devsite.google" allowfullscreen is-upgraded></iframe>

## [DirectionsService](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#DirectionsService)
class


class
`google.maps.DirectionsService`

library `"routes"`

> [!WARNING]
> **[Deprecated:](https://developers.google.com/maps/deprecations.md.txt)** google.maps.DirectionsService is deprecated as of February 25th, 2026. At this time, google.maps.DirectionsService is not scheduled to be discontinued and will continue to receive bug fixes for any major regressions. At least 12 months notice will be given before support is discontinued. Please see <https://developers.google.com/maps/legacy> for additional details.

```javascript
const {DirectionsService} = await google.maps.importLibrary("routes");
```

| ### Constructor ||
|---|---|
| `DirectionsService` | `DirectionsService()` **Parameters:** None Creates a new instance of a `DirectionsService` that sends directions queries to Google servers. |

| ### Methods ||
|---|---|
| `route` | `route(request[, callback])` **Parameters:** - `request: DirectionsRequest` - `callback: function(DirectionsResult optional, DirectionsStatus): void optional` **Return Value:** `Promise<DirectionsResult>` Issue a directions search request. |

## [DirectionsRequest](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#DirectionsRequest)
interface


interface
`google.maps.DirectionsRequest`

A directions query to be sent to the `DirectionsService`.

| ### Properties ||
|---|---|
| `destination` | **Type:** `string|LatLng|Place|LatLngLiteral` Location of destination. This can be specified as either a string to be geocoded, or a `LatLng`, or a `Place`. Required. |
| `origin` | **Type:** `string|LatLng|Place|LatLngLiteral` Location of origin. This can be specified as either a string to be geocoded, or a `LatLng`, or a `Place`. Required. |
| `travelMode` | **Type:** `TravelMode` Type of routing requested. Required. |
| `avoidFerries` optional | **Type:** `boolean optional` If `true`, instructs the Directions service to avoid ferries where possible. Optional. |
| `avoidHighways` optional | **Type:** `boolean optional` If `true`, instructs the Directions service to avoid highways where possible. Optional. |
| `avoidTolls` optional | **Type:** `boolean optional` If `true`, instructs the Directions service to avoid toll roads where possible. Optional. |
| `drivingOptions` optional | **Type:** `DrivingOptions optional` Settings that apply only to requests where `travelMode` is `DRIVING`. This object will have no effect for other travel modes. |
| `language` optional | **Type:** `string optional` A language identifier for the language in which results should be returned, when possible. See the [list of supported languages](https://developers.google.com/maps/faq.md.txt#languagesupport). |
| `optimizeWaypoints` optional | **Type:** `boolean optional` If set to `true`, the `DirectionsService` will attempt to re-order the supplied intermediate waypoints to minimize overall cost of the route. If waypoints are optimized, inspect `DirectionsRoute.waypoint_order` in the response to determine the new ordering. |
| `provideRouteAlternatives` optional | **Type:** `boolean optional` Whether or not route alternatives should be provided. Optional. |
| `region` optional | **Type:** `string optional` Region code used as a bias for geocoding requests. The region code accepts a [ccTLD ("top-level domain")](https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains#Country_code_top-level_domains) two-character value. Most ccTLD codes are identical to ISO 3166-1 codes, with some notable exceptions. For example, the United Kingdom's ccTLD is "uk" (`.co.uk`) while its ISO 3166-1 code is "gb" (technically for the entity of "The United Kingdom of Great Britain and Northern Ireland"). |
| `transitOptions` optional | **Type:** `TransitOptions optional` Settings that apply only to requests where `travelMode` is TRANSIT. This object will have no effect for other travel modes. |
| `unitSystem` optional | **Type:** `UnitSystem optional` **Default:** The unit system used in the country of origin. Preferred unit system to use when displaying distance. |
| `waypoints` optional | **Type:** `Array<DirectionsWaypoint> optional` Array of intermediate waypoints. Directions are calculated from the origin to the destination by way of each waypoint in this array. See the [developer's guide](https://developers.google.com/maps/documentation/javascript/directions#UsageLimits) for the maximum number of waypoints allowed. Waypoints are not supported for transit directions. Optional. |

## [DirectionsStatus](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#DirectionsStatus)
constants


constants
`google.maps.DirectionsStatus`

library `"routes"`

The status returned by the `DirectionsService` on the completion of a call to `route()`. Specify these by value, or by using the constant's name. For example, `'OK'` or `google.maps.DirectionsStatus.OK`.

These constants are also usable as strings. In TypeScript, the string literals are defined by the `DirectionsStatusString` type.

```javascript
const {DirectionsStatus} = await google.maps.importLibrary("routes");
```

| ### Constants ||
|---|---|
| `INVALID_REQUEST` | The `DirectionsRequest` provided was invalid. |
| `MAX_WAYPOINTS_EXCEEDED` | Too many `DirectionsWaypoint`s were provided in the `DirectionsRequest`. See the [developer's guide](https://developers.google.com/maps/documentation/javascript/directions#UsageLimits) for the maximum number of waypoints allowed. |
| `NOT_FOUND` | At least one of the origin, destination, or waypoints could not be geocoded. |
| `OK` | The response contains a valid `DirectionsResult`. |
| `OVER_QUERY_LIMIT` | The webpage has gone over the requests limit in too short a period of time. |
| `REQUEST_DENIED` | The webpage is not allowed to use the directions service. |
| `UNKNOWN_ERROR` | A directions request could not be processed due to a server error. The request may succeed if you try again. |
| `ZERO_RESULTS` | No route could be found between the origin and destination. |

## [DirectionsResult](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#DirectionsResult)
interface


interface
`google.maps.DirectionsResult`

The directions response retrieved from the directions server. You can render these using a `DirectionsRenderer` or parse this object and render it yourself. You must display the warnings and copyrights as noted in the [Google Maps Platform Terms of Service](https://cloud.google.com/maps-platform/terms). Note that though this result is "JSON-like," it is not strictly JSON, as it indirectly includes `LatLng` objects.

| ### Properties ||
|---|---|
| `request` | **Type:** `DirectionsRequest` The DirectionsRequest that yielded this result. |
| `routes` | **Type:** `Array<DirectionsRoute>` An array of `DirectionsRoute`s, each of which contains information about the legs and steps of which it is composed. There will only be one route unless the `DirectionsRequest` was made with `provideRouteAlternatives` set to `true`. |
| `available_travel_modes` optional | **Type:** `Array<TravelMode> optional` Contains an array of available travel modes. This field is returned when a request specifies a travel mode and gets no results. The array contains the available travel modes in the countries of the given set of waypoints. This field is not returned if one or more of the waypoints are 'via waypoints'. |
| `geocoded_waypoints` optional | **Type:** `Array<DirectionsGeocodedWaypoint> optional` An array of `DirectionsGeocodedWaypoint`s, each of which contains information about the geocoding of origin, destination and waypoints. |

## [DirectionsRenderer](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#DirectionsRenderer)
class


class
`google.maps.DirectionsRenderer`
extends `MVCObject`

library `"routes"`

> [!WARNING]
> **[Deprecated:](https://developers.google.com/maps/deprecations.md.txt)** google.maps.DirectionsRenderer is deprecated as of February 25th, 2026. At this time, google.maps.DirectionsRenderer is not scheduled to be discontinued and will continue to receive bug fixes for any major regressions. At least 12 months notice will be given before support is discontinued. Please see <https://developers.google.com/maps/legacy> for additional details.

```javascript
const {DirectionsRenderer} = await google.maps.importLibrary("routes");
```

| ### Constructor ||
|---|---|
| `DirectionsRenderer` | `DirectionsRenderer([opts])` **Parameters:** - `opts: DirectionsRendererOptions optional` Creates the renderer with the given options. Directions can be rendered on a map (as visual overlays) or additionally on a `<div>` panel (as textual instructions). |

| ### Methods ||
|---|---|
| `getDirections` | `getDirections()` **Parameters:** None **Return Value:** `DirectionsResult|null` Returns the renderer's current set of directions. |
| `getMap` | `getMap()` **Parameters:** None **Return Value:** `Map|null` Returns the map on which the `DirectionsResult` is rendered. |
| `getPanel` | `getPanel()` **Parameters:** None **Return Value:** `HTMLElement|null` Returns the panel `<div>` in which the `DirectionsResult` is rendered. |
| `getRouteIndex` | `getRouteIndex()` **Parameters:** None **Return Value:** `number` Returns the current (zero-based) route index in use by this `DirectionsRenderer` object. |
| `setDirections` | `setDirections(directions)` **Parameters:** - `directions: DirectionsResult optional` **Return Value:** None Set the renderer to use the result from the `DirectionsService`. Setting a valid set of directions in this manner will display the directions on the renderer's designated map and panel. |
| `setMap` | `setMap(map)` **Parameters:** - `map: Map optional` **Return Value:** None This method specifies the map on which directions will be rendered. Pass `null` to remove the directions from the map. |
| `setOptions` | `setOptions(options)` **Parameters:** - `options: DirectionsRendererOptions optional` **Return Value:** None Change the options settings of this `DirectionsRenderer` after initialization. |
| `setPanel` | `setPanel(panel)` **Parameters:** - `panel: HTMLElement optional` **Return Value:** None This method renders the directions in a `<div>`. Pass `null` to remove the content from the panel. |
| `setRouteIndex` | `setRouteIndex(routeIndex)` **Parameters:** - `routeIndex: number` **Return Value:** None Set the (zero-based) index of the route in the `DirectionsResult` object to render. By default, the first route in the array will be rendered. |

| ### Events ||
|---|---|
| `directions_changed` | `function()` **Arguments:** None This event is fired when the rendered directions change, either when a new `DirectionsResult` is set or when the user finishes dragging a change to the directions path. |

## [DirectionsRendererOptions](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#DirectionsRendererOptions)
interface


interface
`google.maps.DirectionsRendererOptions`

This object defines the properties that can be set on a `DirectionsRenderer` object.

| ### Properties ||
|---|---|
| `directions` optional | **Type:** `DirectionsResult optional` The directions to display on the map and/or in a `<div>` panel, retrieved as a `DirectionsResult` object from `DirectionsService`. |
| `draggable` optional | **Type:** `boolean optional` If `true`, allows the user to drag and modify the paths of routes rendered by this `DirectionsRenderer`. |
| `hideRouteList` optional | **Type:** `boolean optional` **Default:** `false` This property indicates whether the renderer should provide a user-selectable list of routes shown in the directions panel. |
| `infoWindow` optional | **Type:** `InfoWindow optional` The `InfoWindow` in which to render text information when a marker is clicked. Existing info window content will be overwritten and its position moved. If no info window is specified, the `DirectionsRenderer` will create and use its own info window. This property will be ignored if `suppressInfoWindows` is set to `true`. |
| `map` optional | **Type:** `Map optional` Map on which to display the directions. |
| `markerOptions` optional | **Type:** `MarkerOptions optional` Options for the markers. All markers rendered by the `DirectionsRenderer` will use these options. |
| `panel` optional | **Type:** `HTMLElement optional` The `<div>` in which to display the directions steps. |
| `polylineOptions` optional | **Type:** `PolylineOptions optional` Options for the polylines. All polylines rendered by the `DirectionsRenderer` will use these options. |
| `preserveViewport` optional | **Type:** `boolean optional` **Default:** `false` If this option is set to `true` or the map's center and zoom were never set, the input map is centered and zoomed to the bounding box of this set of directions. |
| `routeIndex` optional | **Type:** `number optional` The index of the route within the `DirectionsResult` object. The default value is 0. |
| `suppressBicyclingLayer` optional | **Type:** `boolean optional` Suppress the rendering of the `BicyclingLayer` when bicycling directions are requested. |
| `suppressInfoWindows` optional | **Type:** `boolean optional` Suppress the rendering of info windows. |
| `suppressMarkers` optional | **Type:** `boolean optional` Suppress the rendering of markers. |
| `suppressPolylines` optional | **Type:** `boolean optional` Suppress the rendering of polylines. |

## [DirectionsWaypoint](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#DirectionsWaypoint)
interface


interface
`google.maps.DirectionsWaypoint`

A `DirectionsWaypoint` represents a location between origin and destination through which the trip should be routed.

| ### Properties ||
|---|---|
| `location` optional | **Type:** `string|LatLng|LatLngLiteral|Place optional` Waypoint location. Can be an address string, a `LatLng`, or a `Place`. Optional. |
| `stopover` optional | **Type:** `boolean optional` **Default:** `true` If `true`, indicates that this waypoint is a stop between the origin and destination. This has the effect of splitting the route into two legs. If `false`, indicates that the route should be biased to go through this waypoint, but not split into two legs. This is useful if you want to create a route in response to the user dragging waypoints on a map. |

## [DirectionsGeocodedWaypoint](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#DirectionsGeocodedWaypoint)
interface


interface
`google.maps.DirectionsGeocodedWaypoint`

A single geocoded waypoint.

| ### Properties ||
|---|---|
| `partial_match` optional | **Type:** `boolean optional` Whether the geocoder did not return an exact match for the original waypoint, though it was able to match part of the requested address. |
| `place_id` optional | **Type:** `string optional` The place ID associated with the waypoint. Place IDs uniquely identify a place in the Google Places database and on Google Maps. Learn more about [Place IDs](https://developers.google.com/maps/documentation/places/web-service/place-id.md.txt) in the Places API developer guide. |
| `types` optional | **Type:** `Array<string> optional` An array of strings denoting the type of the returned geocoded element. For a list of possible strings, refer to the [Address Component Types](https://developers.google.com/maps/documentation/javascript/geocoding.md.txt#GeocodingAddressTypes) section of the Developer's Guide. |

## [DirectionsRoute](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#DirectionsRoute)
interface


interface
`google.maps.DirectionsRoute`

A single route containing a set of legs in a `DirectionsResult`. Note that though this object is "JSON-like," it is not strictly JSON, as it directly and indirectly includes `LatLng` objects.

| ### Properties ||
|---|---|
| `bounds` | **Type:** `LatLngBounds` The bounds for this route. |
| `copyrights` | **Type:** `string` Copyrights text to be displayed for this route. |
| `legs` | **Type:** `Array<DirectionsLeg>` An array of `DirectionsLeg`s, each of which contains information about the steps of which it is composed. There will be one leg for each stopover waypoint or destination specified. So a route with no stopover waypoints will contain one `DirectionsLeg` and a route with one stopover waypoint will contain two. |
| `overview_path` | **Type:** `Array<LatLng>` An array of `LatLng`s representing the entire course of this route. The path is simplified in order to make it suitable in contexts where a small number of vertices is required (such as Static Maps API URLs). |
| `overview_polyline` | **Type:** `string` An [encoded polyline representation](https://developers.google.com/maps/documentation/utilities/polylinealgorithm.md.txt) of the route in overview_path. This polyline is an approximate (smoothed) path of the resulting directions. |
| `summary` | **Type:** `string` Contains a short textual description for the route, suitable for naming and disambiguating the route from alternatives. |
| `warnings` | **Type:** `Array<string>` Warnings to be displayed when showing these directions. |
| `waypoint_order` | **Type:** `Array<number>` If `optimizeWaypoints` was set to `true`, this field will contain the re-ordered permutation of the input waypoints. For example, if the input was: Origin: Los Angeles Waypoints: Dallas, Bangor, Phoenix Destination: New York and the optimized output was ordered as follows: Origin: Los Angeles Waypoints: Phoenix, Dallas, Bangor Destination: New York then this field will be an `Array` containing the values \[2, 0, 1\]. Note that the numbering of waypoints is zero-based. If any of the input waypoints has `stopover` set to `false`, this field will be empty, since route optimization is not available for such queries. |
| `fare` optional | **Type:** `TransitFare optional` The total fare for the whole transit trip. Only applicable to transit requests. |

## [DirectionsLeg](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#DirectionsLeg)
interface


interface
`google.maps.DirectionsLeg`

A single leg consisting of a set of steps in a `DirectionsResult`. Some fields in the leg may not be returned for all requests. Note that though this result is "JSON-like," it is not strictly JSON, as it directly and indirectly includes `LatLng` objects.

| ### Properties ||
|---|---|
| `end_address` | **Type:** `string` The address of the destination of this leg. This content is meant to be read as-is. Do not programmatically parse the formatted address. |
| `end_location` | **Type:** `LatLng` The `DirectionsService` calculates directions between locations by using the nearest transportation option (usually a road) at the start and end locations. `end_location` indicates the actual geocoded destination, which may be different than the `end_location` of the last step if, for example, the road is not near the destination of this leg. |
| `start_address` | **Type:** `string` The address of the origin of this leg. This content is meant to be read as-is. Do not programmatically parse the formatted address. |
| `start_location` | **Type:** `LatLng` The `DirectionsService` calculates directions between locations by using the nearest transportation option (usually a road) at the start and end locations. `start_location` indicates the actual geocoded origin, which may be different than the `start_location` of the first step if, for example, the road is not near the origin of this leg. |
| `steps` | **Type:** `Array<DirectionsStep>` An array of `DirectionsStep`s, each of which contains information about the individual steps in this leg. |
| `[traffic_speed_entry](https://developers.google.com/maps/documentation/javascript/reference/directions#DirectionsLeg.traffic_speed_entry)` | > [!WARNING] > **[Deprecated:](https://developers.google.com/maps/deprecations.md.txt)** This array will always be empty. **Type:** `Array<*>` Information about traffic speed along the leg. |
| `via_waypoints` | **Type:** `Array<LatLng>` An array of non-stopover waypoints along this leg, which were specified in the original request. **Deprecated in alternative routes** . Version 3.27 will be the last version of the API that adds extra `via_waypoints` in alternative routes. When using the Directions Service to implement draggable directions, it is recommended to disable dragging of alternative routes. Only the main route should be draggable. Users can drag the main route until it matches an alternative route. |
| `arrival_time` optional | **Type:** `Time optional` An estimated arrival time for this leg. Only applicable for TRANSIT requests. |
| `departure_time` optional | **Type:** `Time optional` An estimated departure time for this leg. Only applicable for TRANSIT requests. |
| `distance` optional | **Type:** `Distance optional` The total distance covered by this leg. This property may be undefined as the distance may be unknown. |
| `duration` optional | **Type:** `Duration optional` The total duration of this leg. This property may be `undefined` as the duration may be unknown. |
| `duration_in_traffic` optional | **Type:** `Duration optional` The total duration of this leg, taking into account the traffic conditions indicated by the `trafficModel` property. This property may be `undefined` as the duration may be unknown. |

## [DirectionsStep](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#DirectionsStep)
interface


interface
`google.maps.DirectionsStep`

A single `DirectionsStep` in a `DirectionsResult`. Some fields may be `undefined`. Note that though this object is "JSON-like," it is not strictly JSON, as it directly includes `LatLng` objects.

| ### Properties ||
|---|---|
| `encoded_lat_lngs` | **Type:** `string` An [encoded polyline representation](https://developers.google.com/maps/documentation/utilities/polylinealgorithm.md.txt) of the step. This is an approximate (smoothed) path of the step. |
| `end_location` | **Type:** `LatLng` The ending location of this step. |
| `[end_point](https://developers.google.com/maps/documentation/javascript/reference/directions#DirectionsStep.end_point)` | > [!WARNING] > **[Deprecated:](https://developers.google.com/maps/deprecations.md.txt)** Please use `DirectionsStep.end_location`. **Type:** `LatLng` The ending location of this step. |
| `instructions` | **Type:** `string` Instructions for this step. |
| `[lat_lngs](https://developers.google.com/maps/documentation/javascript/reference/directions#DirectionsStep.lat_lngs)` | > [!WARNING] > **[Deprecated:](https://developers.google.com/maps/deprecations.md.txt)** Please use `DirectionsStep.path`. **Type:** `Array<LatLng>` A sequence of `LatLng`s describing the course of this step. This is an approximate (smoothed) path of the step. |
| `maneuver` | **Type:** `string` Contains the action to take for the current step (`turn-left`, `merge`, `straight`, etc.). Values are subject to change, and new values may be introduced without prior notice. |
| `path` | **Type:** `Array<LatLng>` A sequence of `LatLng`s describing the course of this step. This is an approximate (smoothed) path of the step. |
| `start_location` | **Type:** `LatLng` The starting location of this step. |
| `[start_point](https://developers.google.com/maps/documentation/javascript/reference/directions#DirectionsStep.start_point)` | > [!WARNING] > **[Deprecated:](https://developers.google.com/maps/deprecations.md.txt)** Please use `DirectionsStep.start_location`. **Type:** `LatLng` The starting location of this step. |
| `travel_mode` | **Type:** `TravelMode` The mode of travel used in this step. |
| `distance` optional | **Type:** `Distance optional` The distance covered by this step. This property may be `undefined` as the distance may be unknown. |
| `duration` optional | **Type:** `Duration optional` The typical time required to perform this step in seconds and in text form. This property may be `undefined` as the duration may be unknown. |
| `[polyline](https://developers.google.com/maps/documentation/javascript/reference/directions#DirectionsStep.polyline)` optional | > [!WARNING] > **[Deprecated:](https://developers.google.com/maps/deprecations.md.txt)** Please use `DirectionsStep.encoded_lat_lngs`. **Type:** `DirectionsPolyline optional` Contains an object with a single property, 'points', that holds an [encoded polyline](https://developers.google.com/maps/documentation/utilities/polylinealgorithm.md.txt) representation of the step. This polyline is an approximate (smoothed) path of the step. |
| `steps` optional | **Type:** `Array<DirectionsStep> optional` Sub-steps of this step. Specified for non-transit sections of transit routes. |
| `transit` optional | **Type:** `TransitDetails optional` Transit-specific details about this step. This property will be undefined unless the travel mode of this step is `TRANSIT`. |
| `transit_details` optional | **Type:** `TransitDetails optional` Details pertaining to this step if the travel mode is `TRANSIT`. |

## [DirectionsPolyline](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#DirectionsPolyline)
interface


interface
`google.maps.DirectionsPolyline`

An object containing a `points` property to describe the polyline of a `DirectionsStep`.

| ### Properties ||
|---|---|
| `points` | **Type:** `string` An [encoded polyline](https://developers.google.com/maps/documentation/utilities/polylinealgorithm.md.txt). |

## [Place](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#Place)
interface


interface
`google.maps.Place`

Contains information needed to locate, identify, or describe a place for a `DirectionsRequest` or `DistanceMatrixRequest`. In this context, "place" means a business, point of interest, or geographic location. For fetching information about a place, see `PlacesService`.

| ### Properties ||
|---|---|
| `location` optional | **Type:** `LatLng|LatLngLiteral optional` The `LatLng` of the entity described by this place. |
| `placeId` optional | **Type:** `string optional` The place ID of the place (such as a business or point of interest). The place ID is a unique identifier of a place in the Google Maps database. Note that the `placeId` is the most accurate way of identifying a place. If possible, you should specify the `placeId` rather than a `query`. A place ID can be retrieved from any request to the Places API, such as a [TextSearch](https://developers.google.com/maps/documentation/places/web-service/search). Place IDs can also be retrieved from requests to the Geocoding API. For more information, see the [overview of place IDs](https://developers.google.com/maps/documentation/places/web-service/place-id.md.txt). |
| `query` optional | **Type:** `string optional` A search query describing the place (such as a business or point of interest). An example query is "Quay, Upper Level, Overseas Passenger Terminal 5 Hickson Road, The Rocks NSW". If possible, you should specify the `placeId` rather than a `query`. The API does not guarantee the accuracy of resolving the query string to a place. If both the `placeId` and `query` are provided, an error occurs. |

## [TravelMode](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#TravelMode)
constants


constants
`google.maps.TravelMode`

library `"routes"`

The valid travel modes that can be specified in a `DirectionsRequest` as well as the travel modes returned in a `DirectionsStep`. Specify these by value, or by using the constant's name. For example, `'BICYCLING'` or `google.maps.TravelMode.BICYCLING`.

These constants are also usable as strings. In TypeScript, the string literals are defined by the `TravelModeString` type.

```javascript
const {TravelMode} = await google.maps.importLibrary("routes");
```

| ### Constants ||
|---|---|
| `BICYCLING` | Specifies a bicycling directions request. |
| `DRIVING` | Specifies a driving directions request. |
| `TRANSIT` | Specifies a transit directions request. |
| `![Beta](data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M20.21,17.64l-6.15-8.22V5.57h2.57V3H6.35v2.57h2.57v3.86l-6.3,8.4c-0.44,0.6-0.5,1.41-0.15,2.08C2.8,20.58,3.49,21,4.24,21h14.5c1.11,0,2.01-0.9,2.01-2.01C20.75,18.48,20.53,18,20.21,17.64z' fill='%2301579b'/%3E%3C/svg%3E "Beta")TWO_WHEELER` | > [!WARNING] > **Notice:** Available only in the [v=beta channel](https://developers.google.com/maps/documentation/javascript/versions.md.txt#choosing-the-beta-channel). Specifies a two-wheeler directions request. |
| `WALKING` | Specifies a walking directions request. |

## [DrivingOptions](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#DrivingOptions)
interface


interface
`google.maps.DrivingOptions`

Configures the `DirectionsRequest` when the travel mode is set to `DRIVING`.

| ### Properties ||
|---|---|
| `departureTime` | **Type:** `Date` The desired departure time for the route, specified as a `Date` object. The `Date` object measures time in milliseconds since 1 January 1970. This must be specified for a `DrivingOptions` to be valid. The departure time must be set to the current time or some time in the future. It cannot be in the past. |
| `trafficModel` optional | **Type:** `TrafficModel optional` The preferred assumption to use when predicting duration in traffic. The default is `BEST_GUESS`. |

## [TrafficModel](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#TrafficModel)
constants


constants
`google.maps.TrafficModel`

library `"routes"`

The assumptions to use when predicting duration in traffic. Specified as part of a `DirectionsRequest` or `DistanceMatrixRequest`. Specify these by value, or by using the constant's name. For example, `'bestguess'` or `google.maps.TrafficModel.BEST_GUESS`.

These constants are also usable as strings. In TypeScript, the string literals are defined by the `TrafficModelString` type.

```javascript
const {TrafficModel} = await google.maps.importLibrary("routes");
```

| ### Constants ||
|---|---|
| `BEST_GUESS` | Use historical traffic data to best estimate the time spent in traffic. |
| `OPTIMISTIC` | Use historical traffic data to make an optimistic estimate of what the duration in traffic will be. |
| `PESSIMISTIC` | Use historical traffic data to make a pessimistic estimate of what the duration in traffic will be. |

## [TransitOptions](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#TransitOptions)
interface


interface
`google.maps.TransitOptions`

The TransitOptions object to be included in a `DirectionsRequest` when the travel mode is set to TRANSIT.

| ### Properties ||
|---|---|
| `arrivalTime` optional | **Type:** `Date optional` The desired arrival time for the route, specified as a Date object. The Date object measures time in milliseconds since 1 January 1970. If arrival time is specified, departure time is ignored. |
| `departureTime` optional | **Type:** `Date optional` The desired departure time for the route, specified as a Date object. The Date object measures time in milliseconds since 1 January 1970. If neither departure time nor arrival time is specified, the time is assumed to be "now". |
| `modes` optional | **Type:** `Array<TransitMode> optional` One or more preferred modes of transit, such as bus or train. If no preference is given, the API returns the default best route. |
| `routingPreference` optional | **Type:** `TransitRoutePreference optional` A preference that can bias the choice of transit route, such as less walking. If no preference is given, the API returns the default best route. |

## [TransitMode](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#TransitMode)
constants


constants
`google.maps.TransitMode`

library `"routes"`

The valid transit mode e.g. bus that can be specified in a *`TransitOptions`*. Specify these by value, or by using the constant's name. For example, `'BUS'` or `google.maps.TransitMode.BUS`.

These constants are also usable as strings. In TypeScript, the string literals are defined by the `TransitModeString` type.

```javascript
const {TransitMode} = await google.maps.importLibrary("routes");
```

| ### Constants ||
|---|---|
| `BUS` | Specifies bus as a preferred mode of transit. |
| `![Beta](data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M20.21,17.64l-6.15-8.22V5.57h2.57V3H6.35v2.57h2.57v3.86l-6.3,8.4c-0.44,0.6-0.5,1.41-0.15,2.08C2.8,20.58,3.49,21,4.24,21h14.5c1.11,0,2.01-0.9,2.01-2.01C20.75,18.48,20.53,18,20.21,17.64z' fill='%2301579b'/%3E%3C/svg%3E "Beta")LIGHT_RAIL` | > [!WARNING] > **Notice:** Available only in the [v=beta channel](https://developers.google.com/maps/documentation/javascript/versions.md.txt#choosing-the-beta-channel). Specifies light rail as a preferred mode of transit. |
| `RAIL` | Specifies rail as a preferred mode of transit. |
| `SUBWAY` | Specifies subway as a preferred mode of transit. |
| `TRAIN` | Specifies train as a preferred mode of transit. |
| `TRAM` | Specifies tram as a preferred mode of transit. |

## [TransitRoutePreference](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#TransitRoutePreference)
constants


constants
`google.maps.TransitRoutePreference`

library `"routes"`

The valid transit route type that can be specified in a *`TransitOptions`*. Specify these by value, or by using the constant's name. For example, `'LESS_WALKING'` or `google.maps.TransitRoutePreference.LESS_WALKING`.

These constants are also usable as strings. In TypeScript, the string literals are defined by the `TransitRoutePreferenceString` type.

```javascript
const {TransitRoutePreference} = await google.maps.importLibrary("routes");
```

| ### Constants ||
|---|---|
| `FEWER_TRANSFERS` | Specifies that the calculated route should prefer a limited number of transfers. |
| `LESS_WALKING` | Specifies that the calculated route should prefer limited amounts of walking. |

## [TransitFare](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#TransitFare)
interface


interface
`google.maps.TransitFare`

A fare of a `DirectionsRoute ` consisting of value and currency.

| ### Properties ||
|---|---|
| `currency` | **Type:** `string` An [ISO 4217 currency code](http://en.wikipedia.org/wiki/ISO_4217) indicating the currency in which the fare is expressed. |
| `text` | **Type:** `string` The value of the fare, expressed in the given `currency`, as a string. |
| `value` | **Type:** `number` The numerical value of the fare, expressed in the given `currency`. |

## [TransitDetails](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#TransitDetails)
interface


interface
`google.maps.TransitDetails`

Details about the departure, arrival, and mode of transit used in this step.

| ### Properties ||
|---|---|
| `arrival_stop` | **Type:** `TransitStop` The arrival stop of this transit step. |
| `arrival_time` | **Type:** `Time` The arrival time of this step, specified as a Time object. |
| `departure_stop` | **Type:** `TransitStop` The departure stop of this transit step. |
| `departure_time` | **Type:** `Time` The departure time of this step, specified as a Time object. |
| `headsign` | **Type:** `string` The direction in which to travel on this line, as it is marked on the vehicle or at the departure stop. |
| `headway` | **Type:** `number` The expected number of seconds between equivalent vehicles at this stop. |
| `line` | **Type:** `TransitLine` Details about the transit line used in this step. |
| `num_stops` | **Type:** `number` The number of stops on this step. Includes the arrival stop, but not the departure stop. |
| `trip_short_name` | **Type:** `string` The text that appears in schedules and sign boards to identify a transit trip to passengers, for example, to identify train numbers for commuter rail trips. The text uniquely identifies a trip within a service day. |

## [TransitStop](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#TransitStop)
interface


interface
`google.maps.TransitStop`

Details about a transit stop or station.

| ### Properties ||
|---|---|
| `location` | **Type:** `LatLng` The location of this stop. |
| `name` | **Type:** `string` The name of this transit stop. |

## [TransitLine](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#TransitLine)
interface


interface
`google.maps.TransitLine`

Information about the transit line that operates this transit step.

| ### Properties ||
|---|---|
| `agencies` | **Type:** `Array<TransitAgency>` The transit agency that operates this transit line. |
| `color` | **Type:** `string` The color commonly used in signage for this transit line, represented as a hex string. |
| `icon` | **Type:** `string` The URL for an icon associated with this line. |
| `name` | **Type:** `string` The full name of this transit line, e.g. "8 Avenue Local". |
| `short_name` | **Type:** `string` The short name of this transit line, e.g. "E". |
| `text_color` | **Type:** `string` The text color commonly used in signage for this transit line, represented as a hex string. |
| `url` | **Type:** `string` The agency's URL which is specific to this transit line. |
| `vehicle` | **Type:** `TransitVehicle` The type of vehicle used, e.g. train or bus. |

## [TransitAgency](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#TransitAgency)
interface


interface
`google.maps.TransitAgency`

Information about an agency that operates a transit line.

| ### Properties ||
|---|---|
| `name` | **Type:** `string` The name of this transit agency. |
| `phone` | **Type:** `string` The transit agency's phone number. |
| `url` | **Type:** `string` The transit agency's URL. |

## [TransitVehicle](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#TransitVehicle)
interface


interface
`google.maps.TransitVehicle`

Information about the vehicle that operates on a transit line.

| ### Properties ||
|---|---|
| `icon` | **Type:** `string` A URL for an icon that corresponds to the type of vehicle used on this line. |
| `local_icon` | **Type:** `string` A URL for an icon that corresponds to the type of vehicle used in this region instead of the more general icon. |
| `name` | **Type:** `string` A name for this type of TransitVehicle, e.g. "Train" or "Bus". |
| `type` | **Type:** `VehicleType` The type of vehicle used, e.g. train, bus, or ferry. |

## [VehicleType](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#VehicleType)
constants


constants
`google.maps.VehicleType`

library `"routes"`

Possible values for vehicle types.

These constants are also usable as strings. In TypeScript, the string literals are defined by the `VehicleTypeString` type.

```javascript
const {VehicleType} = await google.maps.importLibrary("routes");
```

| ### Constants ||
|---|---|
| `BUS` | Bus. |
| `CABLE_CAR` | A vehicle that operates on a cable, usually on the ground. Aerial cable cars may be of the type `GONDOLA_LIFT`. |
| `COMMUTER_TRAIN` | Commuter rail. |
| `FERRY` | Ferry. |
| `FUNICULAR` | A vehicle that is pulled up a steep incline by a cable. |
| `GONDOLA_LIFT` | An aerial cable car. |
| `HEAVY_RAIL` | Heavy rail. |
| `HIGH_SPEED_TRAIN` | High speed train. |
| `INTERCITY_BUS` | Intercity bus. |
| `METRO_RAIL` | Light rail. |
| `MONORAIL` | Monorail. |
| `OTHER` | Other vehicles. |
| `RAIL` | Rail. |
| `SHARE_TAXI` | Share taxi is a sort of bus transport with ability to drop off and pick up passengers anywhere on its route. Generally share taxi uses minibus vehicles. |
| `SUBWAY` | Underground light rail. |
| `TRAM` | Above ground light rail. |
| `TROLLEYBUS` | Trolleybus. |

## [UnitSystem](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#UnitSystem)
constants


constants
`google.maps.UnitSystem`

library `"core"`

The valid unit systems that can be specified in a *`DirectionsRequest`*.

```javascript
const {UnitSystem} = await google.maps.importLibrary("core");
```

| ### Constants ||
|---|---|
| `IMPERIAL` | Specifies that distances in the `DirectionsResult` should be expressed in imperial units. |
| `METRIC` | Specifies that distances in the `DirectionsResult` should be expressed in metric units. |

## [Distance](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#Distance)
interface


interface
`google.maps.Distance`

A representation of distance as a numeric value and a display string.

| ### Properties ||
|---|---|
| `text` | **Type:** `string` A string representation of the distance value, using the `UnitSystem` specified in the request. |
| `value` | **Type:** `number` The distance in meters. |

## [Duration](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#Duration)
interface


interface
`google.maps.Duration`

A representation of duration as a numeric value and a display string.

| ### Properties ||
|---|---|
| `text` | **Type:** `string` A string representation of the duration value. |
| `value` | **Type:** `number` The duration in seconds. |

## [Time](https://developers.google.com/maps/documentation/javascript/reference/directions.md.txt#Time)
interface


interface
`google.maps.Time`

A representation of time as a Date object, a localized string, and a time zone.

| ### Properties ||
|---|---|
| `text` | **Type:** `string` A string representing the time's value. The time is displayed in the time zone of the transit stop. |
| `time_zone` | **Type:** `string` The time zone in which this stop lies. The value is the name of the time zone as defined in the IANA Time Zone Database, e.g. "America/New_York". |
| `value` | **Type:** `Date` The time of this departure or arrival, specified as a JavaScript Date object. |