import type Graphic from "../../Graphic.js"; import type PopupTemplate from "../../PopupTemplate.js"; import type Polyline from "../../geometry/Polyline.js"; import type { ClonableMixin } from "../../core/Clonable.js"; import type { JSONSupport } from "../../core/JSONSupport.js"; import type { DirectionLineType } from "./types.js"; import type { PolylineProperties } from "../../geometry/Polyline.js"; import type { PopupTemplateProperties } from "../../PopupTemplate.js"; export interface DirectionLineProperties extends Partial> { /** Polyline representing the direction's location. */ geometry?: PolylineProperties | null; /** * The template for displaying content in a [Popup](https://developers.arcgis.com/javascript/latest/references/core/widgets/Popup/) when the graphic is selected. * * @since 4.30 */ popupTemplate?: PopupTemplateProperties | null; } /** * The DirectionLine represents polylines associated with individual direction items. * * @since 4.23 * @see [RouteParameters](https://developers.arcgis.com/javascript/latest/references/core/rest/support/RouteParameters/) * @see [RouteLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/RouteLayer/) * @example * // Print the distance and time between each direction. * const routeLayer = new RouteLayer({ * portalItem: { * id: "69569b47b1e445b8a42ec12feab41ce9" * } * }); * await routeLayer.load(); * * const locale = "en-US"; * const formatMinutes = new Intl.NumberFormat(locale, { * minimumFractionDigits: 1, * maximumFractionDigits: 1 * }); * const formatDistance = new Intl.NumberFormat(locale, { * minimumFractionDigits: 0, * maximumFractionDigits: 0 * }); * * for (const directionLine of routeLayer.directionLines) { * const { distance, duration } = directionLine; * console.log(`Drive ${formatDistance.format(distance)} meters for ${formatMinutes.format(duration)} minutes.`); * } * * // Drive 76 meters for 0.4 minutes. * // Drive 77 meters for 0.2 minutes. * // Drive 150 meters for 0.2 minutes. * // Drive 3,670 meters for 2.6 minutes. * // Drive 307 meters for 0.2 minutes. * // Drive 6,293 meters for 4.5 minutes. * // Drive 42,276 meters for 29.2 minutes. * // etc. */ export default class DirectionLine extends DirectionLineSuperclass { /** * Creates a [DirectionLine](https://developers.arcgis.com/javascript/latest/references/core/rest/support/DirectionLine/) from the parsed [Graphic](https://developers.arcgis.com/javascript/latest/references/core/Graphic/). * The method assumes that the graphic's attributes conform to the route layer item schema. * * @param graphic - A Graphic instance. * @returns A DirectionLine instance. * @since 4.24 */ static fromGraphic(graphic: Graphic): DirectionLine; constructor(properties?: DirectionLineProperties); /** The type of line which is defined by esriDirectionLineType. */ accessor directionLineType: DirectionLineType | null | undefined; /** Length of the line measured in meters. */ accessor distance: number | null | undefined; /** Time of the line measured in minutes. Means how much time is required to go along the line. */ accessor duration: number | null | undefined; /** Polyline representing the direction's location. */ get geometry(): Polyline | null | undefined; set geometry(value: PolylineProperties | null | undefined); /** * The template for displaying content in a [Popup](https://developers.arcgis.com/javascript/latest/references/core/widgets/Popup/) when the graphic is selected. * * @since 4.30 */ get popupTemplate(): PopupTemplate | null | undefined; set popupTemplate(value: PopupTemplateProperties | null | undefined); get type(): "direction-line"; /** * Creates a [Graphic](https://developers.arcgis.com/javascript/latest/references/core/Graphic/) from the [DirectionLine](https://developers.arcgis.com/javascript/latest/references/core/rest/support/DirectionLine/) instance. * The resulting graphic will have attributes that conform to the route layer item schema. * * @returns A Graphic instance. * @since 4.24 */ toGraphic(): Graphic; } declare const DirectionLineSuperclass: typeof JSONSupport & typeof ClonableMixin