UNPKG

@arcgis/core

Version:

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

67 lines (65 loc) 4.49 kB
/** * Provides utility methods for working with [dates](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date). * * @since 4.21 * @see [TimeExtent](https://developers.arcgis.com/javascript/latest/references/core/time/TimeExtent/) * @see [TimeInterval](https://developers.arcgis.com/javascript/latest/references/core/time/TimeInterval/) * @see [TimeSlider](https://developers.arcgis.com/javascript/latest/references/core/widgets/TimeSlider/) * @see [TimeSliderViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/TimeSlider/TimeSliderViewModel/) */ import type Map from "../Map.js"; import type WebMap from "../WebMap.js"; import type WebScene from "../WebScene.js"; import type Layer from "../layers/Layer.js"; import type TimeExtent from "../time/TimeExtent.js"; import type { ReadonlyArrayOrCollection } from "../core/Collection.js"; import type { TimeSliderSettings } from "../widgets/TimeSlider/types.js"; /** * Returns the time extent of all layers which are "feature based" time-aware and/or have a "layer based" time-aware with [Layer.visibilityTimeExtent](https://developers.arcgis.com/javascript/latest/references/core/layers/Layer/#visibilityTimeExtent) set. * If the time extent of the layers is set, the method returns the union of the time extents of all layers. * If the time extent of a layer is not set, the method returns [TimeExtent](https://developers.arcgis.com/javascript/latest/references/core/time/TimeExtent/) with `start` and `end` set to `null`. * For [FeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/) or [MapImageLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/MapImageLayer/) with `hasLiveData` set to `true`, the method fetches the time extent from the server. * * @param layers - An array or collection of layers to compute a time extent from. * @param signal - [AbortSignal](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) allows for cancelable requests. * If canceled, the promise will be rejected with an error named `AbortError`. * See also [AbortController](https://developer.mozilla.org/en-US/docs/Web/API/AbortController). * @returns Returns a promise that resolves to a [TimeExtent](https://developers.arcgis.com/javascript/latest/references/core/time/TimeExtent/). * @example * // Get the time extent of all layers in the view. * const fullTimeExtent = await getTimeExtentFromLayers(view.map.allLayers); * @example * // Get the time extent from an array of layers. * const timeExtent = await getTimeExtentFromLayers([ * earthquakes, * emergencyCalls * ]); */ export function getTimeExtentFromLayers(layers: ReadonlyArrayOrCollection<Layer>, signal?: AbortSignal | null | undefined): Promise<TimeExtent>; /** * Extracts time slider settings from a [WebMap](https://developers.arcgis.com/javascript/latest/references/core/WebMap/) or [WebScene](https://developers.arcgis.com/javascript/latest/references/core/WebScene/) if the document contains a time slider widget definition. * Returns an object with properties that can be used to configure the [TimeSlider](https://developers.arcgis.com/javascript/latest/references/core/widgets/TimeSlider/) or [TimeSliderViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/TimeSlider/TimeSliderViewModel/). * If a document does not contain a time slider definition then `null` is returned. * * @param document - An instance of a webmap or webscene to extract time slider settings from. * @param signal - Signal object that can be used to abort the asynchronous task. * @since 4.30 * @see [Sample - Time-enabled bookmarks](https://developers.arcgis.com/javascript/latest/sample-code/widgets-bookmarks/) * @example * // Import and apply time slider settings stored in a webmap. * const map = new WebMap({ * portalItem: { * id: "your-webmap-id", * } * }); * * const timeUtils = await $arcgis.import("esri/support/timeUtils.js"); * const timeSliderSettings = await timeUtils.getTimeSliderSettingsFromWebDocument(map); * * // Create a new TimeSlider using the settings from the web map. * const timeSlider = new TimeSlider({ * ...timeSliderSettings, * view * }); */ export function getTimeSliderSettingsFromWebDocument(document: Map | WebScene | WebMap | null | undefined, signal?: AbortSignal | null | undefined): Promise<TimeSliderSettings | null | undefined>;