import type { ClonableMixin } from "../../core/Clonable.js"; import type { JSONSupport } from "../../core/JSONSupport.js"; import type { AttributeParameterValue, LengthUnit, TraveModeType, UTurnRestriction } from "./types.js"; export interface TravelModeProperties extends Partial> {} /** * A TravelMode is a set of characteristics that define how an object like a * vehicle, bicycle, or pedestrian moves along a street network. * Those characteristics are considered when finding directions to determine * how the vehicle or pedestrian travels, and where they can go. * To get a list of supported travel modes, find the default travel * mode, and to find and use a specific travel mode, you can use the * [fetchServiceDescription()](https://developers.arcgis.com/javascript/latest/references/core/rest/networkService/#fetchServiceDescription) * method: * * ```js * // 1. Get the default and supported travel modes of a route service * const apiKey = ""; * const url = "https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World"; * const serviceDescription = await fetchServiceDescription(url, apiKey); * const { defaultTravelMode, supportedTravelModes } = serviceDescription; * console.log(`The name of the default travel mode is: ${defaultTravelMode.name}.`); * console.log(`This service has ${supportedTravelModes.length} preset travel modes`); * ``` * ```js * // 2. Find and use the "Driving Time" travel mode * const apiKey = ""; * const url = "https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World"; * const serviceDescription = await fetchServiceDescription(url, apiKey); * const { supportedTravelModes } = serviceDescription; * const driveTimeTravelMode = supportedTravelModes.find(({ name }) => name === "Driving Time"); * * // Solve a route using the "Driving Time" travel mode * const routeParameters = { * stops: stopsFeatureSet, // route stops * travelMode: driveTimeTravelMode * }; * const result = await solve(url, routeParameters); * ``` * * For ArcGIS Enterprise services, the default value for a travel mode is based on the layer * setting when the map service is published with the network analysis capabilities. Open the * service description page to see the default values for the parameters. * * @since 4.20 * @see [Introduction to travel modes](https://doc.arcgis.com/en/arcgis-online/reference/travel-modes.htm) * @see [Default ArcGIS Online travel modes](https://doc.arcgis.com/en/arcgis-online/reference/travel-modes.htm#GUID-96DF7F50-E0B2-4BF3-8271-EB515D3F0107) * @see [DirectionsViewModel.selectedTravelMode](https://developers.arcgis.com/javascript/latest/references/core/widgets/Directions/DirectionsViewModel/#selectedTravelMode) * @see [ClosestFacilityParameters.travelMode](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ClosestFacilityParameters/#travelMode) * @see [RouteParameters.travelMode](https://developers.arcgis.com/javascript/latest/references/core/rest/support/RouteParameters/#travelMode) * @see [ServiceAreaParameters.travelMode](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ServiceAreaParameters/#travelMode) * @see [fetchServiceDescription()](https://developers.arcgis.com/javascript/latest/references/core/rest/networkService/#fetchServiceDescription) */ export default class TravelMode extends TravelModeSuperclass { constructor(properties?: TravelModeProperties); /** Lists the parameterized attributes used by the travel mode. */ accessor attributeParameterValues: AttributeParameterValue[]; /** A short text description of the travel mode. */ accessor description: string | null | undefined; /** * Indicates the distance-based cost attribute for reporting directions and for solving vehicle routing problems. * * Known Value | * ------------| * kilometers | * miles | * meters | */ distanceAttributeName: string; /** The unique identifier. */ accessor id: string; /** * The network cost attribute used as impedance. This cost attribute is minimized while solving network analysis problems. * * Known Value | * ------------| * kilometers | * miles | * meters | * minutes | * time-at-1kph * travel-time | * truck-minutes | * truck-travel-time | * walk-time | */ impedanceAttributeName: string; /** The unique name of the travel mode. */ accessor name: string; /** * The list of the restriction attributes used when solving network analysis problems with this travel mode. * * Known Value | * ------------| * any-hazmat-prohibited | * avoid-carpool-roads | * avoid-express-lanes | * avoid-ferries | * avoid-gates | * avoid-limited-access-roads | * avoid-private-roads | * avoid-roads-unsuitable-for-pedestrians | * avoid-stairways | * avoid-toll-roads | * avoid-toll-roads-for-trucks | * avoid-truck-restricted-roads | * avoid-unpaved-roads | * axle-count-restriction | * driving-a-bus | * driving-a-taxi | * driving-a-truck | * driving-an-automobile | * driving-an-emergency-vehicle | * height-restriction | * kingpin-to-rear-axle-length-restriction | * length-restriction | * preferred-for-pedestrians | * riding-a-motorcycle | * roads-under-construction-prohibited | * semi-or-tractor-with-one-or-more-trailers-prohibited | * single-axle-vehicles-prohibited | * tandem-axle-vehicles-prohibited | * through-traffic-prohibited | * truck-with-trailers-restriction | * use-preferred-hazmat-routes | * use-preferred-truck-routes | * walking | * weight-restriction | */ accessor restrictionAttributeNames: string[]; /** Specifies whether the travel mode generalizes the geometry of analysis results and by how much. */ accessor simplificationTolerance: number; /** The linear units associated with [simplificationTolerance](https://developers.arcgis.com/javascript/latest/references/core/rest/support/TravelMode/#simplificationTolerance). */ simplificationToleranceUnits: LengthUnit; /** * Indicates the time-based cost attribute for reporting directions. * * Known Value | * ------------| * minutes | * time-at-1-kph | * travel-time | * truck-minutes | * truck-travel-time | * walk-time */ timeAttributeName: string; /** Indicates the category of travel or vehicle represented by this travel mode. */ type: TraveModeType; /** Indicates whether the travel mode uses a hierarchy attribute while performing the analysis. */ accessor useHierarchy: boolean; /** Indicates how the U-turns at junctions that could occur during network traversal are handled by the solver. */ uturnAtJunctions: UTurnRestriction; } declare const TravelModeSuperclass: typeof JSONSupport & typeof ClonableMixin