UNPKG

@arcgis/core

Version:

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

123 lines (121 loc) 5.35 kB
import type MediaElementBase from "./MediaElementBase.js"; import type { AnimationOptions, ImageBinarySource, ImageSource } from "../media/types.js"; import type { MediaElementBaseProperties } from "./MediaElementBase.js"; export interface ImageElementProperties extends MediaElementBaseProperties, Partial<Pick<ImageElement, "animationOptions" | "image">> {} /** * Represents an image element referenced in the MediaLayer's [MediaLayer.source](https://developers.arcgis.com/javascript/latest/references/core/layers/MediaLayer/#source). * MediaLayer can display images that are supported by web browsers. Refer to the [common image file types](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#common_image_file_types) * document for supported image types. * * Coordinates of the image and video elements can be specified in any spatial reference and are projected to the view's [spatial reference](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/#spatialReference). * The content is stretched linearly between the coordinates, therefore it's recommended for the image or video to match the view's spatial reference to align correctly, especially for content * covering large areas like the entire earth. * * Note that the maximum size of the image depends on the machine's GPU. The safest maximum size is 2048 x 2048 pixels. The larger the image size, the longer it will take to be fetched and displayed. * * ```js * // add a new imageElement and use extent and rotation * // to place the element on the map. * const imageElement = new ImageElement({ * image: "https://arcgis.github.io/arcgis-samples-javascript/sample-data/media-layer/neworleans1891.png", * georeference: new ExtentAndRotationGeoreference({ * extent: new Extent({ * spatialReference: { * wkid: 102100 * }, * xmin: -10047456.27662979, * ymin: 3486722.2723874687, * xmax: -10006982.870152846, * ymax: 3514468.91365495 * }) * }) * }); * ``` * * @since 4.24 * @see [MediaLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/MediaLayer/) * @see [Sample - MediaLayer with images](https://developers.arcgis.com/javascript/latest/sample-code/layers-medialayer-images/) */ export default class ImageElement extends MediaElementBase { constructor(properties?: ImageElementProperties); /** * The animation options for the image element. This property is only valid when the [image](https://developers.arcgis.com/javascript/latest/references/core/layers/support/ImageElement/#image) is an animated GIF or APNG. * * > [!WARNING] * > * > **Known Limitations** * > * > animationOptions is not supported in 3D [SceneViews](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). * * @since 4.28 * @example * imageElement.animationOptions = { * playing: true, * duration: 10, * repeatType: "loop", * repeatDelay: 0 * }; */ accessor animationOptions: AnimationOptions | null | undefined; /** The image content referenced in the image element instance. The content matches the image referenced in [image](https://developers.arcgis.com/javascript/latest/references/core/layers/support/ImageElement/#image) parameter. */ get content(): ImageBinarySource | null | undefined; /** * The image element to be added to the [media layer's source](https://developers.arcgis.com/javascript/latest/references/core/layers/MediaLayer/#source). The image * element can be URL string pointing the image for example. * * @example * // create an image element pointing url of the image file * const stHelen = new ImageElement({ * image: "https://ubatsukh.github.io/arcgis-js-api-demos/data/nasa/mount_st_helens.jpeg", * georeference: new CornersGeoreference({ * extent: new Extent({ * spatialReference: { * wkid: 102100 * }, * xmax: -13544247.66023844, * xmin: -13659744.009977184, * ymax: 5858405.227033072, * ymin: 5767445.163373847 * }) * }) * }); * @example * // create an image element pointing to image data * const arr = new Uint8ClampedArray(40000); * * // Iterate through every pixel * for (let i = 0; i < arr.length; i += 4) { * arr[i] = 0; // R value * arr[i + 1] = 190; // G value * arr[i + 2] = 0; // B value * arr[i + 3] = 255; // A value * } * * // Initialize a new ImageData object * let imageData = new ImageData(arr, 200); * * // create a new image element pointing to the * // image data and set location of the image on the map * const imageDataElement = new ImageElement({ * image: imageData, * georeference: extent * }); * @example * // create a canvas * const canvas = document.createElement("canvas"); * const ctx = canvas.getContext("2d"); * canvas.width = 200; * canvas.height = 200; * ctx.fillStyle = "blue"; * ctx.fillRect(0, 0, 200, 200); * * // add the canvas as an image element * const canvasElement = new ImageElement({ * image: canvas, * georeference: extent * }); */ accessor image: ImageSource | null | undefined; /** The element type. */ get type(): "image"; }