@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
TypeScript
/**
* 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>;