This commit is contained in:
100
node_modules/ol/src/source/OGCMapTile.js
generated
vendored
Normal file
100
node_modules/ol/src/source/OGCMapTile.js
generated
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
/**
|
||||
* @module ol/source/OGCMapTile
|
||||
*/
|
||||
import TileImage from './TileImage.js';
|
||||
import {getTileSetInfo} from './ogcTileUtil.js';
|
||||
|
||||
/**
|
||||
* @typedef {Object} Options
|
||||
* @property {string} url URL to the OGC Map Tileset endpoint.
|
||||
* @property {Object} [context] A lookup of values to use in the tile URL template. The `{tileMatrix}`
|
||||
* (zoom level), `{tileRow}`, and `{tileCol}` variables in the URL will always be provided by the source.
|
||||
* @property {string} [mediaType] The content type for the tiles (e.g. "image/png"). If not provided,
|
||||
* the source will try to find a link with rel="item" that uses a supported image type.
|
||||
* @property {import("../proj.js").ProjectionLike} [projection] Projection. By default, the projection
|
||||
* will be derived from the `crs` of the `tileMatrixSet`. You can override this by supplying
|
||||
* a projection to the constructor.
|
||||
* @property {import("./Source.js").AttributionLike} [attributions] Attributions.
|
||||
* @property {number} [cacheSize] Tile cache size. The default depends on the screen size. Will be ignored if too small.
|
||||
* @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note that
|
||||
* you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.
|
||||
* See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.
|
||||
* @property {boolean} [imageSmoothing=true] Deprecated. Use the `interpolate` option instead.
|
||||
* @property {boolean} [interpolate=true] Use interpolated values when resampling. By default,
|
||||
* linear interpolation is used when resampling. Set to false to use the nearest neighbor instead.
|
||||
* @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).
|
||||
* Higher values can increase reprojection performance, but decrease precision.
|
||||
* @property {import("../Tile.js").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default is
|
||||
* ```js
|
||||
* function(tile, src) {
|
||||
* tile.getImage().src = src;
|
||||
* };
|
||||
* ```
|
||||
* @property {boolean} [wrapX=true] Whether to wrap the world horizontally.
|
||||
* @property {number} [transition] Duration of the opacity transition for rendering.
|
||||
* To disable the opacity transition, pass `transition: 0`.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @classdesc
|
||||
* Layer source for map tiles from an [OGC API - Tiles](https://ogcapi.ogc.org/tiles/) service that provides "map" type tiles.
|
||||
* The service must conform to at least the core (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/core)
|
||||
* and tileset (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/tileset) conformance classes.
|
||||
*/
|
||||
class OGCMapTile extends TileImage {
|
||||
/**
|
||||
* @param {Options} options OGC map tile options.
|
||||
*/
|
||||
constructor(options) {
|
||||
let interpolate =
|
||||
options.imageSmoothing !== undefined ? options.imageSmoothing : true;
|
||||
if (options.interpolate !== undefined) {
|
||||
interpolate = options.interpolate;
|
||||
}
|
||||
|
||||
super({
|
||||
attributions: options.attributions,
|
||||
cacheSize: options.cacheSize,
|
||||
crossOrigin: options.crossOrigin,
|
||||
interpolate: interpolate,
|
||||
projection: options.projection,
|
||||
reprojectionErrorThreshold: options.reprojectionErrorThreshold,
|
||||
state: 'loading',
|
||||
tileLoadFunction: options.tileLoadFunction,
|
||||
wrapX: options.wrapX !== undefined ? options.wrapX : true,
|
||||
transition: options.transition,
|
||||
});
|
||||
|
||||
const sourceInfo = {
|
||||
url: options.url,
|
||||
projection: this.getProjection(),
|
||||
mediaType: options.mediaType,
|
||||
context: options.context || null,
|
||||
};
|
||||
|
||||
getTileSetInfo(sourceInfo)
|
||||
.then(this.handleTileSetInfo_.bind(this))
|
||||
.catch(this.handleError_.bind(this));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {import("./ogcTileUtil.js").TileSetInfo} tileSetInfo Tile set info.
|
||||
* @private
|
||||
*/
|
||||
handleTileSetInfo_(tileSetInfo) {
|
||||
this.tileGrid = tileSetInfo.grid;
|
||||
this.setTileUrlFunction(tileSetInfo.urlFunction, tileSetInfo.urlTemplate);
|
||||
this.setState('ready');
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @param {Error} error The error.
|
||||
*/
|
||||
handleError_(error) {
|
||||
console.error(error); // eslint-disable-line no-console
|
||||
this.setState('error');
|
||||
}
|
||||
}
|
||||
|
||||
export default OGCMapTile;
|
||||
Reference in New Issue
Block a user