UNPKG

heli-agri

Version:

HeliAgri is a high-performance, feature-packed library for creating interactive maps on the web. It can display map tiles, vector data and markers loaded from any source on any web page. OpenLayers has been developed to further the use of geographic infor

94 lines (84 loc) 3.57 kB
/** * @module ol/source/OSM */ import XYZ from './XYZ.js'; /** * The attribution containing a link to the OpenStreetMap Copyright and License * page. * @const * @type {string} * @api */ export const ATTRIBUTION = '&#169; ' + '<a href="https://www.openstreetmap.org/copyright" target="_blank">OpenStreetMap</a> ' + 'contributors.'; /** * @typedef {Object} Options * @property {import("./Source.js").AttributionLike} [attributions] Attributions. * @property {number} [cacheSize] Initial tile cache size. Will auto-grow to hold at least the number of tiles in the viewport. * @property {null|string} [crossOrigin='anonymous'] 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} [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} [maxZoom=19] Max zoom. * @property {boolean} [opaque=true] Whether the layer is opaque. * @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(imageTile, src) { * imageTile.getImage().src = src; * }; * ``` * @property {number} [transition=250] Duration of the opacity transition for rendering. * To disable the opacity transition, pass `transition: 0`. * @property {string} [url='https://tile.openstreetmap.org/{z}/{x}/{y}.png'] URL template. * Must include `{x}`, `{y}` or `{-y}`, and `{z}` placeholders. * @property {boolean} [wrapX=true] Whether to wrap the world horizontally. * @property {number|import("../array.js").NearestDirectionFunction} [zDirection=0] * Choose whether to use tiles with a higher or lower zoom level when between integer * zoom levels. See {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution}. */ /** * @classdesc * Layer source for the OpenStreetMap tile server. * @api */ class OSM extends XYZ { /** * @param {Options} [options] Open Street Map options. */ constructor(options) { options = options || {}; let attributions; if (options.attributions !== undefined) { attributions = options.attributions; } else { attributions = [ATTRIBUTION]; } const crossOrigin = options.crossOrigin !== undefined ? options.crossOrigin : 'anonymous'; const url = options.url !== undefined ? options.url : 'https://tile.openstreetmap.org/{z}/{x}/{y}.png'; super({ attributions: attributions, attributionsCollapsible: false, cacheSize: options.cacheSize, crossOrigin: crossOrigin, interpolate: options.interpolate, maxZoom: options.maxZoom !== undefined ? options.maxZoom : 19, opaque: options.opaque !== undefined ? options.opaque : true, reprojectionErrorThreshold: options.reprojectionErrorThreshold, tileLoadFunction: options.tileLoadFunction, transition: options.transition, url: url, wrapX: options.wrapX, zDirection: options.zDirection, }); } } export default OSM;