UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

145 lines (135 loc) 9.27 kB
/** * Last Mile Delivery is a type of [Vehicle Routing Problem](https://developers.arcgis.com/documentation/mapping-and-location-services/routing-and-directions/vehicle-routing-problem/) * operation that can find the most optimized routes for a fleet of vehicles that need * to make deliveries. It is specifically tailored to the unique challenges of final * deliveries, focusing on efficiency in dense urban environments. It produces * geographically clustered routes so drivers can easily visit each location, which * minimizes the operating cost for the fleet of vehicles. * * @since 4.34 * @see [LastMileDeliveryParameters](https://developers.arcgis.com/javascript/latest/references/core/rest/support/LastMileDeliveryParameters/) * @see [Solve Last Mile Delivery - ArcGIS Server REST API](https://developers.arcgis.com/rest/routing/last-mile-delivery-service/) */ import type GPOptions from "./geoprocessor/GPOptions.js"; import type FeatureSet from "./support/FeatureSet.js"; import type JobInfo from "./support/JobInfo.js"; import type LastMileDeliveryParameters from "./support/LastMileDeliveryParameters.js"; import type { RequestOptions } from "../request/types.js"; /** The cost of the analysis, including the number of billable objects and the number of credits consumed. */ export interface Cost { /** The number of billable objects. */ numberOfObjects: number; /** The number of credits consumed. */ credits: number; } export type GetResultOptions = Partial<Pick<GPOptions, "outSpatialReference" | "processExtent" | "returnM" | "returnZ">>; /** * Determines the optimized routes for a fleet of vehicles that need to make deliveries. * * @param url - URL to the ArcGIS Server REST resource that represents a network analysis service. * @param parameters - Parameters needed to configure the last mile delivery solver. * @param options - Processing options. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request. * @returns When resolved, returns an instance of [JobInfo](https://developers.arcgis.com/javascript/latest/references/core/rest/support/JobInfo/). * @example * const apiKey = "YOUR_API_KEY"; * const url = "https://logistics.arcgis.com/arcgis/rest/services/World/VehicleRoutingProblem/GPServer/SolveLastMileDelivery"; * const parameters = new LastMileDeliveryParameters({ * apiKey, * depots: new FeatureSet({ features: { <An array of graphics> } }), * orders: new FeatureSet({ features: { <An array of graphics> } }), * routes: new FeatureSet({ features: { <An array of graphics> } }), * earliestRouteStartDate: "2024-02-02", * maxRouteTotalTime: 480, * )}; * * // Returns job-id when async job is complete. * const jobInfo = await lastMileDelivery.exectute(url, parameters); * * const requestOptions = { query: { token: parameters.apiKey } }; * const [depots, orders, routes, cost] = await Promise.all([ * getDepots(jobInfo, null, requestOptions), * getOrders(jobInfo, null, requestOptions), * getRoutes(jobInfo, null, requestOptions), * getCost(jobInfo, null, requestOptions), * ]); */ export function execute(url: string, parameters: LastMileDeliveryParameters, options?: GetResultOptions, requestOptions?: RequestOptions): Promise<JobInfo>; /** * Contains all the fields from the input depots parameter, as well as the following fields that * are either generated or altered by the service. * * @param jobInfo - the JobInfo result from execute * @param options - Processing options. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request. * @returns When resolved, returns an instance of [FeatureSet](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FeatureSet/). * @see [Response objects: output_depots](https://developers.arcgis.com/rest/routing/last-mile-delivery-service/#output_depots) */ export function getDepots(jobInfo: JobInfo, options?: GetResultOptions, requestOptions?: RequestOptions): Promise<FeatureSet>; /** * Contains all the attributes from input orders parameter, * this includes the attributes defined on the service, and also attributes that are pass-through * (you can pass additional attributes on input orders and those attributes will be carried over * to the output). The output also contains following attributes that are either generated or altered by the service. * * @param jobInfo - the JobInfo result from execute * @param options - Processing options. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request. * @returns When resolved, returns an instance of [FeatureSet](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FeatureSet/). * @see [Response objects: output_orders](https://developers.arcgis.com/rest/routing/last-mile-delivery-service/#output_orders) */ export function getOrders(jobInfo: JobInfo, options?: GetResultOptions, requestOptions?: RequestOptions): Promise<FeatureSet>; /** * Contains all the fields from the input routes parameter, as well as the following * fields that are either generated or altered by the service. * * @param jobInfo - the JobInfo result from execute * @param options - Processing options. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request. * @returns When resolved, returns an instance of [FeatureSet](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FeatureSet/). * @see [Response objects: output_routes](https://developers.arcgis.com/rest/routing/last-mile-delivery-service/#output_routes) */ export function getRoutes(jobInfo: JobInfo, options?: GetResultOptions, requestOptions?: RequestOptions): Promise<FeatureSet>; /** * Returns the credits used by the analysis. * * @param jobInfo - the JobInfo result from execute * @param options - Processing options. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request. * @returns When resolved, returns an instance of [Cost](https://developers.arcgis.com/javascript/latest/references/core/rest/lastMileDelivery/#Cost). * @see [Response objects: usage_cost](https://developers.arcgis.com/rest/routing/last-mile-delivery-service/#usage_cost) */ export function getCost(jobInfo: JobInfo, options?: GetResultOptions, requestOptions?: RequestOptions): Promise<Cost>; /** * Specifies the output turn-by-turn directions for the routes calculated * in the analysis, represented as point locations along the routes where specific direction events * or maneuvers occur. * * @param jobInfo - the JobInfo result from execute * @param options - Processing options. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request. * @returns When resolved, returns an instance of [FeatureSet](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FeatureSet/). * @see [Response objects: direction_points](https://developers.arcgis.com/rest/routing/last-mile-delivery-service/#output_direction_points) */ export function getDirectionPoints(jobInfo: JobInfo, options?: GetResultOptions, requestOptions?: RequestOptions): Promise<FeatureSet>; /** * Provides information regarding why a route visited a depot and what happened there. * * @param jobInfo - the JobInfo result from execute * @param options - Processing options. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request. * @returns When resolved, returns an instance of [FeatureSet](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FeatureSet/). * @see [Response objects: depot_visits](https://developers.arcgis.com/rest/routing/last-mile-delivery-service/#output_depot_visits) */ export function getDepotVisits(jobInfo: JobInfo, options?: GetResultOptions, requestOptions?: RequestOptions): Promise<FeatureSet>; /** * The output route lines calculated in the analysis sliced to represent each route * segment between direction points events or maneuver locations. * * @param jobInfo - the JobInfo result from execute * @param options - Processing options. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request. * @returns When resolved, returns an instance of [FeatureSet](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FeatureSet/). * @see [Response objects: direction_lines](https://developers.arcgis.com/rest/routing/last-mile-delivery-service/#output_direction_lines) */ export function getDirectionLines(jobInfo: JobInfo, options?: GetResultOptions, requestOptions?: RequestOptions): Promise<FeatureSet>;