UNPKG

@allmaps/render

Version:

Render functions for WebGL and image buffers

2,470 lines (1,506 loc) 82.2 kB
# @allmaps/render Allmaps render module. Renders georeferenced IIIF maps specified by a Georeference Annotation. The following renderers are implemented: * `CanvasRenderer`: renders WarpedMaps to a HTML Canvas element with the Canvas 2D API * `WebGL2Renderer`: renders WarpedMaps to a WebGL 2 context * `IntArrayRenderer`: renders WarpedMaps to an IntArray This module is mainly used in the Allmaps pipeline by the following packages: * [Allmaps plugin for Leaflet](../leaflet/) * [Allmaps plugin for MapLibre](../maplibre/) * [Allmaps plugin for OpenLayers](../openlayers/) It is also used in the [Allmaps Preview](../../worker/preview/) worker. ## How it works The render module accomplishes this task with the following classes: * All renderers use the concept of a **`Viewport`**, describing coordinate reach that should be rendered. Create a viewport using it's constructor or the static methods in the Viewport class. The CanvasRenderer and WebGL2Renderer can deduce a viewport from the current WarpedMapList and the size of their (WebGL2-enabled) canvas. * All renderers extend the **`BaseRenderer`** class, which implements the general actions of the (automatically throttled) `render()` calls: checking which maps are inside the current viewport, initially loading their image informations, checking which zoomlevel corresponds to the viewport, getting the IIIF tiles of that zoomlevel that are within the viewport. * For the `WebGL2Renderer`, a `WebGL2RenderingContext` contains the rendering context for the drawing surface of an HTML element, and a `WebGLProgram` stores the vertex and fragment shader used for rendering a map, its lines and points. * A **`WarpedMap`** is made from every Georeferenced Map (which in term are parsed Georeference Annotations) and is added to the renderer and hence to its warpedMapList. It contains useful properties like mask, center, size ... in resource, geospatial and projected geospatial coordinates. It contains a copy of the ground control points (GCPs) and resource masks, a projected version of the GCPs, a transformation built using the latter and usable to transform points from IIIF resource coordinates to projected geospatial coordinates. * If `WebGL2Renderer` is used, a **`TriangulatedWarpedMap`** is created for every WarpedMap, finely triangulating the map, and a **`WebGL2WarpedMap`** is created, containing the WebGL2 information of the map (buffers etc.). * A **`WarpedMapList`** contains the list of WarpedMaps to draw and uses an **`RTree`** for geospatial map lookup. * A **`TileCache`** fetches and stores the image data of cached IIIF tiles. ### From Georeference Annotation to a rendered map During a `CanvasRenderer` or `IntArrayRenderer` render call, a map undergoes the following steps from Georeference Annotation to the canvas: * For each viewport pixel, from its viewport coordinates its projected geospatial coordinates are obtained and transformed to its corresponding resource coordinates, i.e. it's location in the IIIF image. * We find the tile on which this point is located, and express the resource coordinates in local tile coordinates. * We set the color of this pixel from the colors of the four tile pixels surrounding the tile point, through a bilinear interpolation. During a `WebGL2Renderer` render call, a map undergoes the following steps from Georeference Annotation to the canvas: * The resource mask is triangulated: the area within is divided into small triangles. * The optimal tile zoom level for the current viewport is searched, telling us which IIIF tile [`scaleFactor`](https://iiif.io/api/image/3.0/#54-tiles) to use. * The Viewport is transformed backwards from projected geospatial coordinates to resource coordinates of the IIIF image. The IIIF tiles covering this viewport on the resource image are fetched and cached in the TileCache. * The area inside the resource mask is rendered in the viewport, triangle by triangle, using the cached tiles. The location of where to render each triangle is computed using the forward transformation built from the GPCs. ## Installation This package works in browsers and in Node.js as an ESM module. Install with pnpm: ```sh pnpm install @allmaps/render ``` You can optionally build this package locally by running: ```sh pnpm run build ``` ## Usage The most straightforward way to use the render logic in this package is by rendering a Georeference Annotation on a webmaps using one of the Allmaps plugins (which use the WebGL2Renderer) or setting up the Allmaps TileServer (which uses the CanvasRenderer). It's also possible to call a renderer directly: ### CanvasRenderer ```js import { CanvasRenderer } from '@allmaps/render/canvas' // Create a canvas and set your desired width and height const canvas = document.getElementById('canvas') canvas.width = width // Your width canvas.height = height // Your height // Create a renderer from your canvas const renderer = new CanvasRenderer(canvas) // Fetch and parse an annotation const annotationUrl = 'https://annotations.allmaps.org/images/4af0fa9c8207b36c' const annotation = await fetch(annotationUrl).then((response) => response.json() ) // Add the annotation to the renderer await renderer.addGeoreferenceAnnotation(annotation) // Render // Note: no viewport specified, so one will be deduced. See below. await renderer.render() ``` Notes: * Maps with strong warping may appear to not exactly follow the specified viewport. This is due the backwards transform being explicitly used in the CanvasRenderer and IntArrayRenderer (and not in the WebGL2Renderer). For maps with strong warping, the backwards transform is currently not exact (even for polynomial transformations). ### WebGL2Renderer ```js import { WebGL2Renderer } from '@allmaps/render/webgl2' // Create a canvas and set your desired width and height const canvas = document.getElementById('canvas') canvas.width = width // Your width canvas.height = height // Your height // Get the webgl context of your canvas const gl = canvas.getContext('webgl2', { premultipliedAlpha: true }) // Create a renderer from your canvas const renderer = new WebGL2Renderer(gl) // Fetch and parse an annotation const annotationUrl = 'https://annotations.allmaps.org/images/4af0fa9c8207b36c' const annotation = await fetch(annotationUrl).then((response) => response.json() ) // Add the annotation to the renderer await renderer.addGeoreferenceAnnotation(annotation) // Render // Note: no viewport specified, so one will be deduced. See below. renderer.render() ``` Notes: the WebGL2Renderer is **not fully functional yet**. * The WebGL2Renderer works with events which are meant to trigger re-renders. This logic can currently be implemented *outside* of this library (see the plugins), and will be implemented *within* this library soon. As this will affect the API, please refrain from using this renderer as described above for now. * The WebGL2Renderer loads images via web-workers. The bundling needs to be optimised to support using this renderer in all possible environments. ### IntArrayRenderer ```js import { IntArrayRenderer } from '@allmaps/render/intarray' // Create a renderer // See the IntArrayRenderer constructor for more info // And the Allmaps Preview application for a concrete example const renderer = new IntArrayRenderer() < D > // A data type (getImageData, // A function to get the image date from an image getImageDataValue, // A function to get the image data value from an image getImageDataSize, // A function to get the image data size from an image options) // IntArrayRenderer options const annotationUrl = 'https://annotations.allmaps.org/images/4af0fa9c8207b36c' const annotation = await fetch(annotationUrl).then((response) => response.json() ) await renderer.addGeoreferenceAnnotation(annotation) // Create your viewport (mandatory for this renderer) const viewport = viewport // Your viewport, see below const image = await renderer.render(viewport) ``` Notes: * Maps with strong warping may appear to not exactly follow the specified viewport. This is due the backwards transform being explicitly used in the CanvasRenderer and IntArrayRenderer (and not in the WebGL2Renderer). For maps with strong warping, the backwards transform is currently not exact (even for polynomial transformations). ### Creating a Viewport The `render()` call of all renderers take a Viewport as input. For the IntArrayRenderer, this argument is required. For the others, it is optional: if unspecified a viewport will be deduced from the canvas size and the warpedMapList formed by the annotations. A viewport can be created through one of the following options: Directly using the Viewport constructor: ```js import { Viewport } from '@allmaps/render' new Viewport( viewportSize, // Your viewport size, as [width, height] projectedGeoCenter, // Your center, in geo coordinates projectedGeoPerViewportScale, // Your geo-per-viewport scale { rotation, // Your rotation devicePixelRatio, // Your device pixel ratio, e.g. window.devicePixelRatio or just 1 projection // Your projection (of the above projected geospatial coordinates), as compatible with Proj4js } ) ``` Using one of the following static methods: * `Viewport.fromSizeAndMaps()` * `Viewport.fromSizeAndGeoPolygon()` * `Viewport.fromSizeAndProjectedGeoPolygon()` * `Viewport.fromScaleAndMaps()` * `Viewport.fromScaleAndGeoPolygon()` * `Viewport.fromScaleAndProjectedGeoPolygon()` For example, to derive a Viewport from a size and maps: ```js const viewport = Viewport.fromSizeAndMaps( viewportSize, // Your viewport size, as [width, height] warpedMapList, // Your WarpedMapList, e.g. `renderer.warpedMapList` partialExtendedViewportOptions // Your extended viewport options, including viewport options (rotation, devicePixelRatio and projection (used both to retrieve the extent of the maps and for the viewport itself)), a zoom; a fit; and WarpedMapList selection options like mapIds or `onlyVisible` ) ``` Or, to derive a Viewport from a scale and maps: ```js const viewport = Viewport.fromScaleAndMaps( projectedGeoPerViewportScale, // Your scale warpedMapList, // Your WarpedMapList, e.g. `renderer.warpedMapList` partialExtendedViewportOptions // Your extended viewport options, including viewport options (rotation, devicePixelRatio and projection (used both to retrieve the extent of the maps and for the viewport itself)), a zoom; and WarpedMapList selection options like mapIds or `onlyVisible` ) // In this case, resize your canvas to the computed viewport // before rendering, to encompass the entire image. canvas.width = viewport.canvasSize[0] canvas.height = viewport.canvasSize[1] canvas.style.width = viewport.viewportSize[0] + 'px' canvas.style.height = viewport.viewportSize[1] + 'px' context.scale(viewport.devicePixelRatio, viewport.devicePixelRatio) ``` For usage examples in webmapping libraries, see the source code of the Allmaps plugins for [Leaflet](../leaflet/), [MapLibre](../maplibre/) and [OpenLayers](../openlayers/). ## Naming conventions In this package the following naming conventions are used: * `viewport...` indicates properties described in viewport coordinates (i.e. with pixel size as perceived by the user) * `canvas...` indicates properties described in canvas coordinates, so viewport device pixel ratio (i.e. with effective pixel size in memory) * `resource...` indicates properties described in resource coordinates (i.e. IIIF tile coordinates of zoomlevel 1) * `geo...` indicates properties described in geospatial coordinates ('WGS84', i.e. `[lon, lat]`) * `projectedGeo...` indicates properties described in projected geospatial coordinates (following a CRS, by default 'EPSG:3857' WebMercator) * `tile...` indicates properties described IIIF tile coordinates ## License MIT ## API ### `AnimationOptions` ###### Fields * `animate` (`boolean`) ### `BaseRenderOptions` ###### Type ```ts object & SpecificWarpedMapListOptions & Partial<WebGL2WarpedMapOptions> ``` ### `CanvasRenderOptions` ###### Type ```ts object & SpecificWarpedMapListOptions & Partial<WebGL2WarpedMapOptions> ``` ### `GetWarpedMapOptions` ###### Type ```ts W extends WebGL2WarpedMap ? WebGL2WarpedMapOptions : W extends TriangulatedWarpedMap ? TriangulatedWarpedMapOptions : W extends WarpedMap ? WarpedMapOptions : never ``` ### `IntArrayRenderOptions` ###### Type ```ts object & SpecificWarpedMapListOptions & Partial<WebGL2WarpedMapOptions> ``` ### `ProjectionOptions` ###### Fields * `projection` (`{name?: string; definition: ProjectionDefinition}`) ### `SelectionOptions` ###### Fields * `geoBbox?` (`[number, number, number, number]`) * `geoPoint?` (`[number, number]`) * `mapIds?` (`Iterable<string>`) * `onlyVisible?` (`boolean`) ### `SpecificBaseRenderOptions` ###### Type ```ts object ``` ### `SpecificTriangulatedWarpedMapOptions` ###### Fields * `distortionMeasures` (`Array<DistortionMeasure>`) * `resourceResolution?` (`number`) ### `SpecificWarpedMapListOptions` ###### Fields * `animatedOptions` (`Array<string>`) * `createRTree` (`boolean`) * `rtreeUpdatedOptions` (`Array<string>`) ### `TransformationOptions` ###### Fields * `options?` (`unknown`) * `type` (` | 'straight' | 'helmert' | 'polynomial' | 'polynomial1' | 'polynomial2' | 'polynomial3' | 'thinPlateSpline' | 'projective' | 'linear'`) ### `new TriangulatedWarpedMap(mapId, georeferencedMap, options)` Creates an instance of a TriangulatedWarpedMap. ###### Parameters * `mapId` (`string`) * ID of the map * `georeferencedMap` (`{ type: "GeoreferencedMap"; resource: { id: string; type: "ImageService1" | "ImageService2" | "ImageService3" | "Canvas"; height?: number | undefined; width?: number | undefined; partOf?: ({ id: string; type: string; label?: Record<string, (string | number | boolean)[]> | undefined; } & { partOf?: ({ id: string; typ...`) * Georeferenced map used to construct the WarpedMap * `options?` (`Partial<TriangulatedWarpedMap> | undefined`) * Options ###### Returns `TriangulatedWarpedMap`. ###### Extends * `WarpedMap` ### `TriangulatedWarpedMap#clearProjectedTransformerCaches()` ###### Parameters There are no parameters. ###### Returns `void`. ### `TriangulatedWarpedMap#clearProjectedTriangulationCaches()` ###### Parameters There are no parameters. ###### Returns `void`. ### `TriangulatedWarpedMap#clearResourceTriangulationCaches()` ###### Parameters There are no parameters. ###### Returns `void`. ### `TriangulatedWarpedMap#defaultOptions` ###### Type ```ts SpecificTriangulatedWarpedMapOptions & WarpedMapOptions ``` ### `TriangulatedWarpedMap#georeferencedMapOptions` ###### Type ```ts { resourceResolution?: number | undefined; distortionMeasures?: Array<DistortionMeasure> | undefined; fetchFn?: FetchFn | undefined; imageInfoByMapId?: ImageInfoByMapId | undefined; ... 7 more ...; distortionMeasure?: DistortionMeasure | undefined; } ``` ### `TriangulatedWarpedMap#listOptions` ###### Type ```ts { resourceResolution?: number | undefined; distortionMeasures?: Array<DistortionMeasure> | undefined; fetchFn?: FetchFn | undefined; imageInfoByMapId?: ImageInfoByMapId | undefined; ... 7 more ...; distortionMeasure?: DistortionMeasure | undefined; } ``` ### `TriangulatedWarpedMap#mapOptions` ###### Type ```ts { resourceResolution?: number | undefined; distortionMeasures?: Array<DistortionMeasure> | undefined; fetchFn?: FetchFn | undefined; imageInfoByMapId?: ImageInfoByMapId | undefined; ... 7 more ...; distortionMeasure?: DistortionMeasure | undefined; } ``` ### `TriangulatedWarpedMap#mixPreviousAndNew(t)` Mix previous transform properties with new ones (when changing an ongoing animation). ###### Parameters * `t` (`number`) * animation progress ###### Returns `void`. ### `TriangulatedWarpedMap#options` ###### Type ```ts SpecificTriangulatedWarpedMapOptions & WarpedMapOptions ``` ### `TriangulatedWarpedMap#previousResourceResolution` ###### Type ```ts number | undefined ``` ### `TriangulatedWarpedMap#previousTrianglePointsDistortion` ###### Type ```ts Array<never> ``` ### `TriangulatedWarpedMap#projectedGcpPreviousTriangulation?` ###### Type ```ts { resourceResolution: number | undefined gcpUniquePoints: GcpAndDistortions[] uniquePointIndices: number[] uniquePointIndexInterpolatedPolygon: TypedPolygon<number> } ``` ### `TriangulatedWarpedMap#projectedGcpTriangulation?` ###### Type ```ts { resourceResolution: number | undefined gcpUniquePoints: GcpAndDistortions[] uniquePointIndices: number[] uniquePointIndexInterpolatedPolygon: TypedPolygon<number> } ``` ### `TriangulatedWarpedMap#projectedGcpTriangulationCache` ###### Type ```ts Map< number, Map<string, Map<TransformationType, Map<string, GcpTriangulation>>> > ``` ### `TriangulatedWarpedMap#projectedGeoPreviousTrianglePoints` ###### Type ```ts Array<never> ``` ### `TriangulatedWarpedMap#projectedGeoPreviousTriangulationAppliableMask` ###### Type ```ts Array<never> ``` ### `TriangulatedWarpedMap#projectedGeoPreviousTriangulationMask` ###### Type ```ts Array<never> ``` ### `TriangulatedWarpedMap#projectedGeoTrianglePoints` ###### Type ```ts Array<never> ``` ### `TriangulatedWarpedMap#projectedGeoTriangulationAppliableMask` ###### Type ```ts Array<never> ``` ### `TriangulatedWarpedMap#projectedGeoTriangulationMask` ###### Type ```ts Array<never> ``` ### `TriangulatedWarpedMap#resetPrevious()` Reset previous transform properties to new ones (when completing an animation). ###### Parameters There are no parameters. ###### Returns `void`. ### `TriangulatedWarpedMap#resourceResolution` ###### Type ```ts number | undefined ``` ### `TriangulatedWarpedMap#resourceTrianglePoints` ###### Type ```ts Array<never> ``` ### `TriangulatedWarpedMap#resourceTriangulationCache` ###### Type ```ts Map<number, Map<string, TriangulationToUnique>> ``` ### `TriangulatedWarpedMap#setDefaultOptions()` Set default options ###### Parameters There are no parameters. ###### Returns `void`. ### `TriangulatedWarpedMap#setDistortionMeasure(distortionMeasure)` Set the distortionMeasure ###### Parameters * `distortionMeasure?` (`DistortionMeasure | undefined`) * the disortion measure ###### Returns `void`. ### `TriangulatedWarpedMap#setGcps(gcps)` Update the ground control points loaded from a georeferenced map to new ground control points. ###### Parameters * `gcps` (`Array<Gcp>`) * the new ground control points ###### Returns `void`. ### `TriangulatedWarpedMap#setInternalProjection(projection)` Set the internal projection ###### Parameters * `projection` (`{name?: string; definition: ProjectionDefinition}`) * the internal projection ###### Returns `void`. ### `TriangulatedWarpedMap#setProjection(projection)` Set the projection ###### Parameters * `projection` (`{name?: string; definition: ProjectionDefinition}`) * the projection ###### Returns `void`. ### `TriangulatedWarpedMap#setResourceMask(resourceFullMask, resourceAppliableMask, resourceMask)` Update the resource mask loaded from a georeferenced map to a new mask. ###### Parameters * `resourceFullMask` (`Array<Point>`) * `resourceAppliableMask` (`Array<Point>`) * `resourceMask` (`Array<Point>`) * the new mask ###### Returns `void`. ### `TriangulatedWarpedMap#trianglePointsDistortion` ###### Type ```ts Array<never> ``` ### `TriangulatedWarpedMap#triangulateErrorCount` ###### Type ```ts 0 ``` ### `TriangulatedWarpedMap#updateProjectedTransformerProperties()` ###### Parameters There are no parameters. ###### Returns `void`. ### `TriangulatedWarpedMap#updateTrianglePoints()` Derive the (previous and new) resource and projectedGeo points from their corresponding triangulations. Also derive the (previous and new) triangulation-refined resource and projectedGeo mask ###### Parameters There are no parameters. ###### Returns `void`. ### `TriangulatedWarpedMap#updateTrianglePointsDistortion()` Derive the (previous and new) distortions from their corresponding triangulations. ###### Parameters There are no parameters. ###### Returns `void`. ### `TriangulatedWarpedMap#updateTriangulation()` Update the (previous and new) triangulation of the resourceMask. Use cache if available. ###### Parameters There are no parameters. ###### Returns `void`. ### `TriangulatedWarpedMap.getDefaultOptions()` Get default options ###### Parameters There are no parameters. ###### Returns `SpecificTriangulatedWarpedMapOptions & WarpedMapOptions`. ### `TriangulatedWarpedMapOptions` ###### Type ```ts SpecificTriangulatedWarpedMapOptions & WarpedMapOptions ``` ### `new Viewport(viewportSize, projectedGeoCenter, projectedGeoPerViewportScale, partialViewportOptions)` Creates a new Viewport ###### Parameters * `viewportSize` (`[number, number]`) * Size of the viewport in viewport pixels, as \[width, height]. * `projectedGeoCenter` (`[number, number]`) * Center point of the viewport, in projected geospatial coordinates. * `projectedGeoPerViewportScale` (`number`) * Scale of the viewport, in projection coordinates per viewport pixel. * `partialViewportOptions?` (`Partial<ViewportOptions> | undefined`) ###### Returns `Viewport`. ### `Viewport#canvasBbox` ###### Type ```ts [number, number, number, number] ``` ### `Viewport#canvasCenter` ###### Type ```ts [number, number] ``` ### `Viewport#canvasRectangle` ###### Type ```ts [Point, Point, Point, Point] ``` ### `Viewport#canvasResolution` ###### Type ```ts number ``` ### `Viewport#canvasSize` ###### Type ```ts [number, number] ``` ### `Viewport#composeProjectedGeoToCanvasHomogeneousTransform()` ###### Parameters There are no parameters. ###### Returns `[number, number, number, number, number, number]`. ### `Viewport#composeProjectedGeoToClipHomogeneousTransform()` ###### Parameters There are no parameters. ###### Returns `[number, number, number, number, number, number]`. ### `Viewport#composeProjectedGeoToViewportHomogeneousTransform()` ###### Parameters There are no parameters. ###### Returns `[number, number, number, number, number, number]`. ### `Viewport#composeViewportToClipHomogeneousTransform()` ###### Parameters There are no parameters. ###### Returns `[number, number, number, number, number, number]`. ### `Viewport#computeProjectedGeoRectangle(viewportSize, projectedGeoPerViewportScale, rotation, projectedGeoCenter)` Returns a rectangle in projected geospatial coordinates The rectangle is the result of a horizontal rectangle in Viewport space of size 'viewportSize', scaled using projectedGeoPerViewportScale, centered, rotated using 'rotation' and translated to 'projectedGeoCenter'. ###### Parameters * `viewportSize` (`[number, number]`) * `projectedGeoPerViewportScale` (`number`) * `rotation` (`number`) * `projectedGeoCenter` (`[number, number]`) ###### Returns `[Point, Point, Point, Point]`. ### `Viewport#devicePixelRatio` ###### Type ```ts number ``` ### `Viewport#geoCenter` ###### Type ```ts [number, number] ``` ### `Viewport#geoRectangle` ###### Type ```ts [Point, Point, Point, Point] ``` ### `Viewport#geoRectangleBbox` ###### Type ```ts [number, number, number, number] ``` ### `Viewport#geoResolution` ###### Type ```ts number ``` ### `Viewport#geoSize` ###### Type ```ts [number, number] ``` ### `Viewport#getGeoBufferedRectangle(bufferFraction)` ###### Parameters * `bufferFraction?` (`number | undefined`) ###### Returns `[Point, Point, Point, Point]`. ### `Viewport#getProjectedGeoBufferedRectangle(bufferFraction)` ###### Parameters * `bufferFraction?` (`number | undefined`) ###### Returns `[Point, Point, Point, Point]`. ### `Viewport#projectedGeoCenter` ###### Type ```ts [number, number] ``` ### `Viewport#projectedGeoPerCanvasScale` ###### Type ```ts number ``` ### `Viewport#projectedGeoPerViewportScale` ###### Type ```ts number ``` ### `Viewport#projectedGeoRectangle` ###### Type ```ts [Point, Point, Point, Point] ``` ### `Viewport#projectedGeoRectangleBbox` ###### Type ```ts [number, number, number, number] ``` ### `Viewport#projectedGeoResolution` ###### Type ```ts number ``` ### `Viewport#projectedGeoSize` ###### Type ```ts [number, number] ``` ### `Viewport#projectedGeoToCanvasHomogeneousTransform` ###### Type ```ts [number, number, number, number, number, number] ``` ### `Viewport#projectedGeoToClipHomogeneousTransform` ###### Type ```ts [number, number, number, number, number, number] ``` ### `Viewport#projectedGeoToViewportHomogeneousTransform` ###### Type ```ts [number, number, number, number, number, number] ``` ### `Viewport#projection` ###### Type ```ts {name?: string; definition: ProjectionDefinition} ``` ### `Viewport#rotation` ###### Type ```ts number ``` ### `Viewport#viewportBbox` ###### Type ```ts [number, number, number, number] ``` ### `Viewport#viewportCenter` ###### Type ```ts [number, number] ``` ### `Viewport#viewportRectangle` ###### Type ```ts [Point, Point, Point, Point] ``` ### `Viewport#viewportResolution` ###### Type ```ts number ``` ### `Viewport#viewportSize` ###### Type ```ts [number, number] ``` ### `Viewport#viewportToClipHomogeneousTransform` ###### Type ```ts [number, number, number, number, number, number] ``` ### `Viewport.fromScaleAndGeoPolygon(projectedGeoPerViewportScale, geoPolygon, partialExtendedViewportOptions)` Static method that creates a Viewport from a scale and a polygon in geospatial coordinates, i.e. lon-lat `EPSG:4326`. Note: the scale is still in *projected* geospatial per viewport pixel! ###### Parameters * `projectedGeoPerViewportScale` (`number`) * Scale of the viewport, in projected geospatial coordinates per viewport pixel. * `geoPolygon` (`Array<Array<Point>>`) * A polygon in geospatial coordinates. * `partialExtendedViewportOptions?` (` | Partial< {rotation: number; devicePixelRatio: number} & ProjectionOptions & ZoomOptions > | undefined`) ###### Returns A new Viewport object (`Viewport`). ### `Viewport.fromScaleAndMaps(projectedGeoPerViewportScale, warpedMapList, partialExtendedViewportOptions)` Static method that creates a Viewport from a scale and maps. Optionally specify a projection, to be used both when obtaining the extent of selected warped maps in projected geospatial coordinates, as well as when create a viewport ###### Parameters * `projectedGeoPerViewportScale` (`number`) * Scale of the viewport, in projected geospatial coordinates per viewport pixel. * `warpedMapList` (`WarpedMapList<W>`) * A WarpedMapList. * `partialExtendedViewportOptions?` (` | Partial< {rotation: number; devicePixelRatio: number} & ProjectionOptions & ZoomOptions & SelectionOptions > | undefined`) * Optional viewport options. ###### Returns A new Viewport object (`Viewport`). ### `Viewport.fromScaleAndProjectedGeoPolygon(projectedGeoPerViewportScale, projectedGeoPolygon, partialExtendedViewportOptions)` Static method that creates a Viewport from a scale and a polygon in projected geospatial coordinates. ###### Parameters * `projectedGeoPerViewportScale` (`number`) * Scale of the viewport, in projected geospatial coordinates per viewport pixel. * `projectedGeoPolygon` (`Array<Array<Point>>`) * A polygon in projected geospatial coordinates. * `partialExtendedViewportOptions?` (` | Partial< {rotation: number; devicePixelRatio: number} & ProjectionOptions & ZoomOptions > | undefined`) ###### Returns A new Viewport object (`Viewport`). ### `Viewport.fromSizeAndGeoPolygon(viewportSize, geoPolygon, partialExtendedViewportOptions)` Static method that creates a Viewport from a size and a polygon in geospatial coordinates, i.e. lon-lat `EPSG:4326`. ###### Parameters * `viewportSize` (`[number, number]`) * Size of the viewport in viewport pixels, as \[width, height]. * `geoPolygon` (`Array<Array<Point>>`) * A polygon in geospatial coordinates. * `partialExtendedViewportOptions?` (` | Partial< {rotation: number; devicePixelRatio: number} & ProjectionOptions & ZoomOptions & FitOptions > | undefined`) * Optional viewport options ###### Returns A new Viewport object (`Viewport`). ### `Viewport.fromSizeAndMaps(viewportSize, warpedMapList, partialExtendedViewportOptions)` Static method that creates a Viewport from a size and maps. Optionally specify a projection, to be used both when obtaining the extent of selected warped maps in projected geospatial coordinates, as well as when create a viewport ###### Parameters * `viewportSize` (`[number, number]`) * Size of the viewport in viewport pixels, as \[width, height]. * `warpedMapList` (`WarpedMapList<W>`) * A WarpedMapList. * `partialExtendedViewportOptions?` (` | Partial< {rotation: number; devicePixelRatio: number} & ProjectionOptions & ZoomOptions & FitOptions & SelectionOptions > | undefined`) * Optional viewport options ###### Returns A new Viewport object (`Viewport`). ### `Viewport.fromSizeAndProjectedGeoPolygon(viewportSize, projectedGeoPolygon, partialExtendedViewportOptions)` Static method that creates a Viewport from a size and a polygon in projected geospatial coordinates. ###### Parameters * `viewportSize` (`[number, number]`) * Size of the viewport in viewport pixels, as \[width, height]. * `projectedGeoPolygon` (`Array<Array<Point>>`) * A polygon in projected geospatial coordinates. * `partialExtendedViewportOptions?` (` | Partial< {rotation: number; devicePixelRatio: number} & ProjectionOptions & ZoomOptions & FitOptions > | undefined`) * Optional viewport options ###### Returns A new Viewport object (`Viewport`). ### `new WarpedMap(mapId, georeferencedMap, options)` Creates an instance of WarpedMap. ###### Parameters * `mapId` (`string`) * ID of the map * `georeferencedMap` (`{ type: "GeoreferencedMap"; resource: { id: string; type: "ImageService1" | "ImageService2" | "ImageService3" | "Canvas"; height?: number | undefined; width?: number | undefined; partOf?: ({ id: string; type: string; label?: Record<string, (string | number | boolean)[]> | undefined; } & { partOf?: ({ id: string; typ...`) * Georeferenced map used to construct the WarpedMap * `options` (`Partial<WarpedMapOptions> | undefined`) * options ###### Returns `WarpedMap`. ###### Extends * `EventTarget` ### `WarpedMap#abortController?` ###### Type ```ts AbortController ``` ### `WarpedMap#clearProjectedTransformerCaches()` ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#defaultOptions` ###### Type ```ts { fetchFn?: FetchFn; imageInfoByMapId?: ImageInfoByMapId; gcps: Gcp[]; resourceMask: Ring; transformationType: TransformationType; ... 4 more ...; distortionMeasure: DistortionMeasure | undefined; } ``` ### `WarpedMap#destroy()` ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#distortionMeasure?` ###### Type ```ts 'log2sigma' | 'twoOmega' | 'airyKavr' | 'signDetJ' | 'thetaa' ``` ### `WarpedMap#fetchableTilesForViewport` ###### Type ```ts Array<never> ``` ### `WarpedMap#gcps` ###### Type ```ts Array<Gcp> ``` ### `WarpedMap#geoAppliableMask` ###### Type ```ts Array<Point> ``` ### `WarpedMap#geoAppliableMaskBbox` ###### Type ```ts [number, number, number, number] ``` ### `WarpedMap#geoAppliableMaskRectangle` ###### Type ```ts [Point, Point, Point, Point] ``` ### `WarpedMap#geoFullMask` ###### Type ```ts Array<Point> ``` ### `WarpedMap#geoFullMaskBbox` ###### Type ```ts [number, number, number, number] ``` ### `WarpedMap#geoFullMaskRectangle` ###### Type ```ts [Point, Point, Point, Point] ``` ### `WarpedMap#geoMask` ###### Type ```ts Array<Point> ``` ### `WarpedMap#geoMaskBbox` ###### Type ```ts [number, number, number, number] ``` ### `WarpedMap#geoMaskRectangle` ###### Type ```ts [Point, Point, Point, Point] ``` ### `WarpedMap#geoPoints` ###### Type ```ts Array<Point> ``` ### `WarpedMap#georeferencedMap` ###### Type ```ts { type: "GeoreferencedMap"; resource: { id: string; type: "ImageService1" | "ImageService2" | "ImageService3" | "Canvas"; height?: number | undefined; width?: number | undefined; partOf?: ({ id: string; type: string; label?: Record<string, (string | number | boolean)[]> | undefined; } & { partOf?: ({ id: string; typ... ``` ### `WarpedMap#georeferencedMapOptions` ###### Type ```ts { fetchFn?: FetchFn | undefined; imageInfoByMapId?: ImageInfoByMapId | undefined; gcps?: Array<Gcp> | undefined; resourceMask?: Ring | undefined; ... 5 more ...; distortionMeasure?: DistortionMeasure | undefined; } ``` ### `WarpedMap#getDefaultAndGeoreferencedMapOptions()` Get default and georeferenced map options ###### Parameters There are no parameters. ###### Returns `{ fetchFn?: FetchFn; imageInfoByMapId?: ImageInfoByMapId; gcps: Gcp[]; resourceMask: Ring; transformationType: TransformationType; ... 4 more ...; distortionMeasure: DistortionMeasure | undefined; }`. ### `WarpedMap#getProjectedTransformer(transformationType, partialProjectedGcpTransformerOptions)` Get a projected transformer of the given transformation type. Uses cashed projected transformers by transformation type, and only computes a new projected transformer if none found. Returns a projected transformer in the current projection, even if the cached transformer was computed in a different projection. Default settings apply for the options. ###### Parameters * `transformationType` (` | 'straight' | 'helmert' | 'polynomial' | 'polynomial1' | 'polynomial2' | 'polynomial3' | 'thinPlateSpline' | 'projective' | 'linear'`) * `partialProjectedGcpTransformerOptions?` (`Partial<ProjectedGcpTransformerOptions> | undefined`) ###### Returns A projected transformer (`ProjectedGcpTransformer`). ### `WarpedMap#getReferenceScale()` Get the reference scaling from the forward transformation of the projected Helmert transformer ###### Parameters There are no parameters. ###### Returns `number`. ### `WarpedMap#getResourceFullMask()` ###### Parameters There are no parameters. ###### Returns `[Point, Point, Point, Point]`. ### `WarpedMap#getResourceToCanvasScale(viewport)` Get scale of the warped map, in resource pixels per canvas pixels. ###### Parameters * `viewport` (`Viewport`) * the current viewport ###### Returns `number`. ### `WarpedMap#getResourceToViewportScale(viewport)` Get scale of the warped map, in resource pixels per viewport pixels. ###### Parameters * `viewport` (`Viewport`) * the current viewport ###### Returns `number`. ### `WarpedMap#hasImageInfo()` Check if this instance has image info ###### Parameters There are no parameters. ###### Returns `boolean`. ### `WarpedMap#imageInfo?` ###### Type ```ts unknown ``` ### `WarpedMap#internalProjection` ###### Type ```ts {name?: string; definition: ProjectionDefinition} ``` ### `WarpedMap#listOptions` ###### Type ```ts { fetchFn?: FetchFn | undefined; imageInfoByMapId?: ImageInfoByMapId | undefined; gcps?: Array<Gcp> | undefined; resourceMask?: Ring | undefined; ... 5 more ...; distortionMeasure?: DistortionMeasure | undefined; } ``` ### `WarpedMap#loadImageInfo()` Fetch and parse the image info, and generate the image ID ###### Parameters There are no parameters. ###### Returns `Promise<void>`. ### `WarpedMap#loadingImageInfo` ###### Type ```ts boolean ``` ### `WarpedMap#mapId` ###### Type ```ts string ``` ### `WarpedMap#mapOptions` ###### Type ```ts { fetchFn?: FetchFn | undefined; imageInfoByMapId?: ImageInfoByMapId | undefined; gcps?: Array<Gcp> | undefined; resourceMask?: Ring | undefined; ... 5 more ...; distortionMeasure?: DistortionMeasure | undefined; } ``` ### `WarpedMap#mixPreviousAndNew(t)` Mix previous transform properties with new ones (when changing an ongoing animation). ###### Parameters * `t` (`number`) * animation progress ###### Returns `void`. ### `WarpedMap#mixed` ###### Type ```ts false ``` ### `WarpedMap#options` ###### Type ```ts { fetchFn?: FetchFn; imageInfoByMapId?: ImageInfoByMapId; gcps: Gcp[]; resourceMask: Ring; transformationType: TransformationType; ... 4 more ...; distortionMeasure: DistortionMeasure | undefined; } ``` ### `WarpedMap#overviewFetchableTilesForViewport` ###### Type ```ts Array<never> ``` ### `WarpedMap#overviewTileZoomLevelForViewport?` ###### Type ```ts { scaleFactor: number width: number height: number originalWidth: number originalHeight: number columns: number rows: number } ``` ### `WarpedMap#parsedImage?` ###### Type ```ts Image ``` ### `WarpedMap#previousDistortionMeasure?` ###### Type ```ts 'log2sigma' | 'twoOmega' | 'airyKavr' | 'signDetJ' | 'thetaa' ``` ### `WarpedMap#previousInternalProjection` ###### Type ```ts {name?: string; definition: ProjectionDefinition} ``` ### `WarpedMap#previousTransformationType` ###### Type ```ts | 'straight' | 'helmert' | 'polynomial' | 'polynomial1' | 'polynomial2' | 'polynomial3' | 'thinPlateSpline' | 'projective' | 'linear' ``` ### `WarpedMap#projectedGcps` ###### Type ```ts Array<Gcp> ``` ### `WarpedMap#projectedGeoAppliableMask` ###### Type ```ts Array<Point> ``` ### `WarpedMap#projectedGeoAppliableMaskBbox` ###### Type ```ts [number, number, number, number] ``` ### `WarpedMap#projectedGeoAppliableMaskRectangle` ###### Type ```ts [Point, Point, Point, Point] ``` ### `WarpedMap#projectedGeoBufferedViewportRectangleBboxForViewport?` ###### Type ```ts [number, number, number, number] ``` ### `WarpedMap#projectedGeoBufferedViewportRectangleForViewport?` ###### Type ```ts [Point, Point, Point, Point] ``` ### `WarpedMap#projectedGeoFullMask` ###### Type ```ts Array<Point> ``` ### `WarpedMap#projectedGeoFullMaskBbox` ###### Type ```ts [number, number, number, number] ``` ### `WarpedMap#projectedGeoFullMaskRectangle` ###### Type ```ts [Point, Point, Point, Point] ``` ### `WarpedMap#projectedGeoMask` ###### Type ```ts Array<Point> ``` ### `WarpedMap#projectedGeoMaskBbox` ###### Type ```ts [number, number, number, number] ``` ### `WarpedMap#projectedGeoMaskRectangle` ###### Type ```ts [Point, Point, Point, Point] ``` ### `WarpedMap#projectedGeoPoints` ###### Type ```ts Array<Point> ``` ### `WarpedMap#projectedGeoPreviousTransformedResourcePoints` ###### Type ```ts Array<Point> ``` ### `WarpedMap#projectedGeoTransformedResourcePoints` ###### Type ```ts Array<Point> ``` ### `WarpedMap#projectedPreviousTransformer` ###### Type ```ts ProjectedGcpTransformer ``` ### `WarpedMap#projectedTransformer` ###### Type ```ts ProjectedGcpTransformer ``` ### `WarpedMap#projectedTransformerCache` ###### Type ```ts Map<TransformationType, ProjectedGcpTransformer> ``` ### `WarpedMap#projectedTransformerDoubleCache` ###### Type ```ts Map<TransformationType, Map<string, ProjectedGcpTransformer>> ``` ### `WarpedMap#projection` ###### Type ```ts {name?: string; definition: ProjectionDefinition} ``` ### `WarpedMap#resetForViewport()` Reset the properties for the current values ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#resetPrevious()` Reset previous transform properties to new ones (when completing an animation). ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#resourceAppliableMask` ###### Type ```ts Array<Point> ``` ### `WarpedMap#resourceAppliableMaskBbox` ###### Type ```ts [number, number, number, number] ``` ### `WarpedMap#resourceAppliableMaskRectangle` ###### Type ```ts [Point, Point, Point, Point] ``` ### `WarpedMap#resourceBufferedViewportRingBboxAndResourceMaskBboxIntersectionForViewport?` ###### Type ```ts [number, number, number, number] ``` ### `WarpedMap#resourceBufferedViewportRingBboxForViewport?` ###### Type ```ts [number, number, number, number] ``` ### `WarpedMap#resourceBufferedViewportRingForViewport?` ###### Type ```ts Array<Point> ``` ### `WarpedMap#resourceFullMask` ###### Type ```ts Array<Point> ``` ### `WarpedMap#resourceFullMaskBbox` ###### Type ```ts [number, number, number, number] ``` ### `WarpedMap#resourceFullMaskRectangle` ###### Type ```ts [Point, Point, Point, Point] ``` ### `WarpedMap#resourceMask` ###### Type ```ts Array<Point> ``` ### `WarpedMap#resourceMaskBbox` ###### Type ```ts [number, number, number, number] ``` ### `WarpedMap#resourceMaskRectangle` ###### Type ```ts [Point, Point, Point, Point] ``` ### `WarpedMap#resourcePoints` ###### Type ```ts Array<Point> ``` ### `WarpedMap#resourceToProjectedGeoScale` ###### Type ```ts number ``` ### `WarpedMap#setDefaultOptions()` ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#setDistortionMeasure(distortionMeasure)` Set the distortionMeasure ###### Parameters * `distortionMeasure?` (`DistortionMeasure | undefined`) * the disortion measure ###### Returns `void`. ### `WarpedMap#setFetchableTilesForViewport(fetchableTiles)` Set tiles for the current viewport ###### Parameters * `fetchableTiles` (`Array<FetchableTile>`) ###### Returns `void`. ### `WarpedMap#setGcps(gcps)` Update the ground control points loaded from a georeferenced map to new ground control points. ###### Parameters * `gcps` (`Array<Gcp>`) ###### Returns `void`. ### `WarpedMap#setInternalProjection(projection)` Set the internal projection ###### Parameters * `projection?` (`Projection | undefined`) * the internal projection ###### Returns `void`. ### `WarpedMap#setListOptions(listOptions, animationOptions)` ###### Parameters * `listOptions?` (`Partial<WarpedMapOptions> | undefined`) * `animationOptions?` (`Partial<AnimationOptions> | undefined`) ###### Returns `object`. ### `WarpedMap#setMapOptions(mapOptions, listOptions, animationOptions)` ###### Parameters * `mapOptions?` (`Partial<WarpedMapOptions> | undefined`) * `listOptions?` (`Partial<WarpedMapOptions> | undefined`) * `animationOptions?` (`Partial<AnimationOptions & AnimationOptionsInternal> | undefined`) ###### Returns `object`. ### `WarpedMap#setOptions(animationOptions)` ###### Parameters * `animationOptions?` (`Partial<AnimationOptions & AnimationOptionsInternal> | undefined`) ###### Returns `object`. ### `WarpedMap#setOverviewFetchableTilesForViewport(overviewFetchableTiles)` Set overview tiles for the current viewport ###### Parameters * `overviewFetchableTiles` (`Array<FetchableTile>`) ###### Returns `void`. ### `WarpedMap#setOverviewTileZoomLevelForViewport(tileZoomLevel)` Set the overview tile zoom level for the current viewport ###### Parameters * `tileZoomLevel?` (`TileZoomLevel | undefined`) * tile zoom level for the current viewport ###### Returns `void`. ### `WarpedMap#setProjectedGeoBufferedViewportRectangleForViewport(projectedGeoBufferedViewportRectangle)` Set projectedGeoBufferedViewportRectangle for the current viewport ###### Parameters * `projectedGeoBufferedViewportRectangle?` (`Rectangle | undefined`) ###### Returns `void`. ### `WarpedMap#setProjection(projection)` Set the projection ###### Parameters * `projection?` (`Projection | undefined`) * the projection ###### Returns `void`. ### `WarpedMap#setResourceBufferedViewportRingBboxAndResourceMaskBboxIntersectionForViewport(resourceBufferedViewportRingBboxAndResourceMaskBboxIntersection)` Set resourceBufferedViewportRingBboxAndResourceMaskBboxIntersection for the current viewport ###### Parameters * `resourceBufferedViewportRingBboxAndResourceMaskBboxIntersection?` (`Bbox | undefined`) ###### Returns `void`. ### `WarpedMap#setResourceBufferedViewportRingForViewport(resourceBufferedViewportRing)` Set resourceBufferedViewportRing for the current viewport ###### Parameters * `resourceBufferedViewportRing?` (`Ring | undefined`) ###### Returns `void`. ### `WarpedMap#setResourceMask(resourceFullMask, resourceAppliableMask, resourceMask)` Update the resource mask loaded from a georeferenced map to a new mask. ###### Parameters * `resourceFullMask` (`Array<Point>`) * `resourceAppliableMask` (`Array<Point>`) * `resourceMask` (`Array<Point>`) ###### Returns `void`. ### `WarpedMap#setTileZoomLevelForViewport(tileZoomLevel)` Set the tile zoom level for the current viewport ###### Parameters * `tileZoomLevel?` (`TileZoomLevel | undefined`) * tile zoom level for the current viewport ###### Returns `void`. ### `WarpedMap#setTransformationType(transformationType)` Set the transformationType ###### Parameters * `transformationType` (` | 'straight' | 'helmert' | 'polynomial' | 'polynomial1' | 'polynomial2' | 'polynomial3' | 'thinPlateSpline' | 'projective' | 'linear'`) ###### Returns `void`. ### `WarpedMap#shouldRenderLines()` ###### Parameters There are no parameters. ###### Returns `boolean`. ### `WarpedMap#shouldRenderMap()` ###### Parameters There are no parameters. ###### Returns `boolean`. ### `WarpedMap#shouldRenderPoints()` ###### Parameters There are no parameters. ###### Returns `boolean`. ### `WarpedMap#tileZoomLevelForViewport?` ###### Type ```ts { scaleFactor: number width: number height: number originalWidth: number originalHeight: number columns: number rows: number } ``` ### `WarpedMap#transformationType` ###### Type ```ts | 'straight' | 'helmert' | 'polynomial' | 'polynomial1' | 'polynomial2' | 'polynomial3' | 'thinPlateSpline' | 'projective' | 'linear' ``` ### `WarpedMap#updateAppliableGeoMask()` ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#updateFullGeoMask()` ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#updateGcpsProperties()` ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#updateGeoMask()` ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#updateGeoMaskProperties()` ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#updateProjectedAppliableGeoMask()` ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#updateProjectedFullGeoMask()` ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#updateProjectedGeoMask()` ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#updateProjectedGeoMaskProperties()` ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#updateProjectedTransformer()` ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#updateProjectedTransformerProperties()` ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#updateResourceMaskProperties()` ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap#updateResourceToProjectedGeoScale()` ###### Parameters There are no parameters. ###### Returns `void`. ### `WarpedMap.getDefaultOptions()` Get default options ###### Parameters There are no parameters. ###### Returns `{ fetchFn?: FetchFn; imageInfoByMapId?: ImageInfoByMapId; gcps: Gcp[]; resourceMask: Ring; transformationType: TransformationType; ... 4 more ...; distortionMeasure: DistortionMeasure | undefined; }`. ### `new WarpedMapEvent(type, data)` ###### Parameters * `type` (`WarpedMapEventType`) * `data?` (`Partial<WarpedMapEventData> | undefined`) ###### Returns `WarpedMapEvent`. ###### Extends * `Event` ### `WarpedMapEvent#data?` ###### Type ```ts { mapIds?: Array<string> | undefined tileUrl?: string | undefined optionKeys?: Array<string> | undefined } ``` ### `new WarpedMapList(warpedMapFactory, options)` Creates an instance of a WarpedMapList ###### Parameters * `warpedMapFactory` (`( mapId: string, georeferencedMap: GeoreferencedMap, options?: Partial<WarpedMapOptions> ) => W`) * Factory function for creating WarpedMap objects * `options?` (`Partial<WarpedMapListOptions> | undefined`) * Options of this list, which will be set on newly added maps as their list options ###### Returns `WarpedMapList<W>`. ###### Extends * `EventTarget` ### `WarpedMapList#addEventListenersToWarpedMap(warpedMap)` ###### Parameters * `warpedMap` (`W`) ###### Returns `void`. ### `WarpedMapList#addGeoreferenceAnnotation(annotation)` Parses an annotation and adds its georeferenced map to this list ###### Parameters * `annotation` (`unknown`) ###### Returns Map IDs of the maps that were added, or an error per map (`Promise<Array<string | Error>>`). ### `WarpedMapList#addGeoreferencedMap(georeferencedMap)` Adds a georeferenced map to this list ###### Parameters * `georeferencedMap` (`unknown`) ###### Returns Map ID of the map that was added (`Promise<string>`). ### `WarpedMapList#addGeoreferencedMapInternal(georeferencedMap)` ###### Parameters * `georeferencedMap` (`{ type: "GeoreferencedMap"; resource: { id: string; type: "ImageService1" | "ImageService2" | "ImageService3" | "Canvas"; height?: number | undefined; width?: number | undefined; partOf?: ({ id: string; type: string; label?: Record<string, (string | number | boolean)[]> | undefined; } & { partOf?: ({ id: string; typ...`) ###### Returns `Promise<string>`. ### `WarpedMapList#addToOrUpdateRtree(warpedMap)` ###### Parameters * `warpedMap` (`W`) ###### Returns `void`. ### `WarpedMapList#bringMapsForward(mapIds)` Changes the z-index of the specified maps to bring them forward ###### Parameters * `mapIds` (`Iterable<string>`) * Map IDs ###### Returns `void`. ### `WarpedMapList#bringMapsToFront(mapIds)` Ch