UNPKG

@arcgis/core

Version:

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

163 lines (161 loc) 7.87 kB
import type Accessor from "../../core/Accessor.js"; import type Collection from "../../core/Collection.js"; import type Extent from "../../geometry/Extent.js"; import type WMSLayer from "../WMSLayer.js"; import type { ReadonlyArrayOrCollection } from "../../core/Collection.js"; import type { IdentifiableMixin, IdentifiableMixinProperties } from "../../core/Identifiable.js"; import type { MultiOriginJSONSupportMixin } from "../../core/MultiOriginJSONSupport.js"; import type { WMSDimension } from "../wms/types.js"; import type { ExtentProperties } from "../../geometry/Extent.js"; export interface WMSSublayerProperties extends IdentifiableMixinProperties, Partial<Pick<WMSSublayer, "description" | "id" | "layer" | "legendEnabled" | "legendUrl" | "maxScale" | "minScale" | "name" | "parent" | "popupEnabled" | "queryable" | "spatialReferences" | "title" | "visible">> { /** The full extent of the layer. */ fullExtent?: ExtentProperties; /** A collection of [WMSSublayer](https://developers.arcgis.com/javascript/latest/references/core/layers/support/WMSSublayer/)s. */ sublayers?: ReadonlyArrayOrCollection<WMSSublayerProperties> | null; } /** * Represents a sublayer in a [WMSLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/WMSLayer/). * * @since 4.4 */ export default class WMSSublayer extends WMSSublayerSuperclass { constructor(properties?: WMSSublayerProperties); /** * Description for the WMS sublayer. * This defaults to the value of the Abstract property from the WMS GetCapabilities request. */ accessor description: string; /** * An array of time, elevation and other dimensions for the sublayer. * Information from a [TimeDimension](https://developers.arcgis.com/javascript/latest/references/core/layers/wms/types/#TimeDimension) can be used to update [View.timeExtent](https://developers.arcgis.com/javascript/latest/references/core/views/View/#timeExtent), * [WMSLayer.timeExtent](https://developers.arcgis.com/javascript/latest/references/core/layers/WMSLayer/#timeExtent), or to configure a [TimeSlider](https://developers.arcgis.com/javascript/latest/references/core/widgets/TimeSlider/) widget. * * A [WMSLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/WMSLayer/) or WMSSublayer can only have one time dimension. The following example shows how to find the * time dimension (if any) for the base layer. * * ```js * const layer = new WMSLayer({ * url: "https://public-wms.met.no/verportal/verportal.map?request=GetCapabilities&service=WMS&version=1.3.0" * }); * await layer.load(); * const precipitation = layer.allSublayers.find((sl) => sl.name === "precipitation_3h_global"); * layer.sublayers = [precipitation]; * const timeDimension = precipitation.dimensions.find((dimension) => dimension.name === "time"); * ``` * * Data can exist at specific times or time ranges. We can access this information from the `extent` property of the * [TimeDimension](https://developers.arcgis.com/javascript/latest/references/core/layers/wms/types/#TimeDimension) as either an array of discrete dates or [DimensionInterval](https://developers.arcgis.com/javascript/latest/references/core/layers/wms/types/#DimensionInterval)s. * For example, continuing from the previous example, a [TimeSlider](https://developers.arcgis.com/javascript/latest/references/core/widgets/TimeSlider/) is configured using the extent from a TimeDimension. * * ```js * const dates = timeDimension.extent; // This time dimension is expressed as an array of dates. * const start = dates[0]; // Get the first and earliest date * const end = dates[dates.length -1]; // Get last date * const timeSlider = new TimeSlider({ * container: "timeSliderDiv", * view: view, * mode: "instant", * timeVisible: true, * loop: true, * fullTimeExtent: { // The TimeSlider UI will span all dates * start, * end * }, * stops: { * dates // The TimeSlider thumb will snap exactly to each valid date * } * }) * * @since 4.20 */ get dimensions(): WMSDimension[] | null | undefined; /** The full extent of the layer. */ get fullExtent(): Extent; set fullExtent(value: ExtentProperties); /** The id for the WMS sublayer. */ accessor id: number; /** The [WMSLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/WMSLayer/) to which the sublayer belongs. */ accessor layer: WMSLayer | null | undefined; /** * Indicates whether the layer will be included in the legend. When `false`, the layer will be excluded from the legend. * * @default true */ accessor legendEnabled: boolean; /** A string url pointing to a legend image for the layer. */ accessor legendUrl: string | null | undefined; /** * The maximum scale (most zoomed in) at which the layer is visible in the view. * If the map is zoomed in beyond this scale, the layer will not be visible. * A value of zero means the layer does not have a maximum scale. * * @default 0 * @since 4.14 */ accessor maxScale: number; /** * The minimum scale (most zoomed out) at which the layer is visible in the view. * If the map is zoomed out beyond this scale, the layer will not be visible. * A value of zero means the layer does not have a minimum scale. * * @default 0 * @since 4.14 */ accessor minScale: number; /** * Name of the WMS sublayer. * This defaults to the value of the Name property from the WMS GetCapabilities request. */ accessor name: string; /** * Returns a reference to the parent WMS sublayer or layer. * * @since 4.17 * @example * // Display the title and description for the WMS sublayer named "RADAR_1KM_RDBR". * const wmsLayer = new WMSLayer({ * url: "https://geo.weather.gc.ca/geomet" * }); * wmsLayer.load().then(() => { * const subLayer = layer.findSublayerByName("RADAR_1KM_RDBR"); * let parent = wmsSubLayer.parent; * while(parent) { * parent.visible = true; * parent = parent.parent; * } * }); */ accessor parent: WMSSublayer | WMSLayer | null | undefined; /** * Indicates whether to display popups when features in the layer are clicked. * * @default false */ accessor popupEnabled: boolean; /** * Indicates if the layer can be queried, i.e. the service supports GetFeatureInfo with either text/html or text/plain formats. * * @default false */ accessor queryable: boolean; /** List of spatialReferences (WKID) derived from the CRS elements of the first layer in the GetCapabilities request. */ accessor spatialReferences: number[] | null | undefined; /** A collection of [WMSSublayer](https://developers.arcgis.com/javascript/latest/references/core/layers/support/WMSSublayer/)s. */ get sublayers(): Collection<WMSSublayer> | null | undefined; set sublayers(value: ReadonlyArrayOrCollection<WMSSublayerProperties> | null | undefined); /** * The title of the WMS sublayer used to identify it in places such as the * [LayerList](https://developers.arcgis.com/javascript/latest/references/core/widgets/LayerList/) and [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-legend/). * This defaults to the value of the Title property from the WMS GetCapabilities request. */ accessor title: string | null | undefined; /** Indicates if the layer is visible in the view. */ accessor visible: boolean; /** * Creates a deep clone of the WMS sublayer. * * @returns A deep clone of the WMS sublayer instance that invoked this method. */ clone(): WMSSublayer; } declare const WMSSublayerSuperclass: typeof Accessor & typeof MultiOriginJSONSupportMixin & typeof IdentifiableMixin