diff --git a/externs/olx.js b/externs/olx.js index 9e3490116d7..16bddc6b9bc 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -5,798 +5,6 @@ let olx; -/** - * @typedef {{opacity: (number|undefined), - * source: (ol.source.Source|undefined), - * visible: (boolean|undefined), - * extent: (ol.Extent|undefined), - * zIndex: (number|undefined), - * minResolution: (number|undefined), - * maxResolution: (number|undefined)}} - */ -olx.layer.LayerOptions; - - -/** - * Opacity (0, 1). Default is `1`. - * @type {number|undefined} - * @api - */ -olx.layer.LayerOptions.prototype.opacity; - - -/** - * Source for this layer. If not provided to the constructor, the source can - * be set by calling {@link ol.layer.Layer#setSource layer.setSource(source)} - * after construction. - * @type {ol.source.Source|undefined} - * @api - */ -olx.layer.LayerOptions.prototype.source; - - -/** - * Visibility. Default is `true` (visible). - * @type {boolean|undefined} - * @api - */ -olx.layer.LayerOptions.prototype.visible; - - -/** - * The bounding extent for layer rendering. The layer will not be rendered - * outside of this extent. - * @type {ol.Extent|undefined} - * @api - */ -olx.layer.LayerOptions.prototype.extent; - - -/** - * The z-index for layer rendering. At rendering time, the layers will be - * ordered, first by Z-index and then by position. The default Z-index is 0. - * @type {number|undefined} - * @api - */ -olx.layer.LayerOptions.prototype.zIndex; - - -/** - * The minimum resolution (inclusive) at which this layer will be visible. - * @type {number|undefined} - * @api - */ -olx.layer.LayerOptions.prototype.minResolution; - - -/** - * The maximum resolution (exclusive) below which this layer will be visible. - * @type {number|undefined} - * @api - */ -olx.layer.LayerOptions.prototype.maxResolution; - - -/** - * @typedef {{opacity: (number|undefined), - * visible: (boolean|undefined), - * extent: (ol.Extent|undefined), - * zIndex: (number|undefined), - * minResolution: (number|undefined), - * maxResolution: (number|undefined), - * layers: (Array.|ol.Collection.|undefined)}} - */ -olx.layer.GroupOptions; - - -/** - * Opacity (0, 1). Default is `1`. - * @type {number|undefined} - * @api - */ -olx.layer.GroupOptions.prototype.opacity; - - -/** - * Visibility. Default is `true`. - * @type {boolean|undefined} - * @api - */ -olx.layer.GroupOptions.prototype.visible; - - -/** - * The bounding extent for layer rendering. The layer will not be rendered - * outside of this extent. - * @type {ol.Extent|undefined} - * @api - */ -olx.layer.GroupOptions.prototype.extent; - - -/** - * The z-index for layer rendering. At rendering time, the layers will be - * ordered, first by Z-index and then by position. The default Z-index is 0. - * @type {number|undefined} - * @api - */ -olx.layer.GroupOptions.prototype.zIndex; - - -/** - * The minimum resolution (inclusive) at which this layer will be visible. - * @type {number|undefined} - * @api - */ -olx.layer.GroupOptions.prototype.minResolution; - - -/** - * The maximum resolution (exclusive) below which this layer will be visible. - * @type {number|undefined} - * @api - */ -olx.layer.GroupOptions.prototype.maxResolution; - - -/** - * Child layers. - * @type {Array.|ol.Collection.|undefined} - * @api - */ -olx.layer.GroupOptions.prototype.layers; - - -/** - * @typedef {{gradient: (Array.|undefined), - * radius: (number|undefined), - * blur: (number|undefined), - * shadow: (number|undefined), - * weight: (string|function(module:ol/Feature~Feature):number|undefined), - * extent: (ol.Extent|undefined), - * minResolution: (number|undefined), - * maxResolution: (number|undefined), - * opacity: (number|undefined), - * source: (ol.source.Vector|undefined), - * visible: (boolean|undefined), - * zIndex: (number|undefined)}} - */ -olx.layer.HeatmapOptions; - - -/** - * The color gradient of the heatmap, specified as an array of CSS color - * strings. Default is `['#00f', '#0ff', '#0f0', '#ff0', '#f00']`. - * @type {Array.|undefined} - * @api - */ -olx.layer.HeatmapOptions.prototype.gradient; - - -/** - * Radius size in pixels. Default is `8`. - * @type {number|undefined} - * @api - */ -olx.layer.HeatmapOptions.prototype.radius; - - -/** - * Blur size in pixels. Default is `15`. - * @type {number|undefined} - * @api - */ -olx.layer.HeatmapOptions.prototype.blur; - - -/** - * Shadow size in pixels. Default is `250`. - * @type {number|undefined} - * @api - */ -olx.layer.HeatmapOptions.prototype.shadow; - - -/** - * The feature attribute to use for the weight or a function that returns a - * weight from a feature. Weight values should range from 0 to 1 (and values - * outside will be clamped to that range). Default is `weight`. - * @type {string|function(module:ol/Feature~Feature):number|undefined} - * @api - */ -olx.layer.HeatmapOptions.prototype.weight; - - -/** - * The bounding extent for layer rendering. The layer will not be rendered - * outside of this extent. - * @type {ol.Extent|undefined} - * @api - */ -olx.layer.HeatmapOptions.prototype.extent; - - -/** - * The minimum resolution (inclusive) at which this layer will be visible. - * @type {number|undefined} - * @api - */ -olx.layer.HeatmapOptions.prototype.minResolution; - - -/** - * The maximum resolution (exclusive) below which this layer will be visible. - * @type {number|undefined} - * @api - */ -olx.layer.HeatmapOptions.prototype.maxResolution; - - -/** - * Opacity. 0-1. Default is `1`. - * @type {number|undefined} - * @api - */ -olx.layer.HeatmapOptions.prototype.opacity; - - -/** - * Source. - * @type {ol.source.Vector} - * @api - */ -olx.layer.HeatmapOptions.prototype.source; - - -/** - * Visibility. Default is `true` (visible). - * @type {boolean|undefined} - * @api - */ -olx.layer.HeatmapOptions.prototype.visible; - - -/** - * The z-index for layer rendering. At rendering time, the layers will be - * ordered, first by Z-index and then by position. The default Z-index is 0. - * @type {number|undefined} - * @api - */ -olx.layer.HeatmapOptions.prototype.zIndex; - - -/** - * @typedef {{opacity: (number|undefined), - * map: (ol.PluggableMap|undefined), - * source: (ol.source.Image|undefined), - * visible: (boolean|undefined), - * extent: (ol.Extent|undefined), - * minResolution: (number|undefined), - * maxResolution: (number|undefined), - * zIndex: (number|undefined)}} - */ -olx.layer.ImageOptions; - - -/** - * Opacity (0, 1). Default is `1`. - * @type {number|undefined} - * @api - */ -olx.layer.ImageOptions.prototype.opacity; - - -/** - * Source for this layer. - * @type {ol.source.Image} - * @api - */ -olx.layer.ImageOptions.prototype.source; - - -/** - * Sets the layer as overlay on a map. The map will not manage this layer in its - * layers collection, and the layer will be rendered on top. This is useful for - * temporary layers. The standard way to add a layer to a map and have it - * managed by the map is to use {@link ol.Map#addLayer}. - * @type {ol.PluggableMap|undefined} - * @api - */ -olx.layer.ImageOptions.prototype.map; - - -/** - * Visibility. Default is `true` (visible). - * @type {boolean|undefined} - * @api - */ -olx.layer.ImageOptions.prototype.visible; - - -/** - * The bounding extent for layer rendering. The layer will not be rendered - * outside of this extent. - * @type {ol.Extent|undefined} - * @api - */ -olx.layer.ImageOptions.prototype.extent; - - -/** - * The minimum resolution (inclusive) at which this layer will be visible. - * @type {number|undefined} - * @api - */ -olx.layer.ImageOptions.prototype.minResolution; - - -/** - * The maximum resolution (exclusive) below which this layer will be visible. - * @type {number|undefined} - * @api - */ -olx.layer.ImageOptions.prototype.maxResolution; - - -/** - * The z-index for layer rendering. At rendering time, the layers will be - * ordered, first by Z-index and then by position. The default Z-index is 0. - * @type {number|undefined} - * @api - */ -olx.layer.ImageOptions.prototype.zIndex; - - -/** - * @typedef {{opacity: (number|undefined), - * preload: (number|undefined), - * source: (ol.source.Tile|undefined), - * map: (ol.PluggableMap|undefined), - * visible: (boolean|undefined), - * extent: (ol.Extent|undefined), - * minResolution: (number|undefined), - * maxResolution: (number|undefined), - * useInterimTilesOnError: (boolean|undefined), - * zIndex: (number|undefined)}} - */ -olx.layer.TileOptions; - - -/** - * Opacity (0, 1). Default is `1`. - * @type {number|undefined} - * @api - */ -olx.layer.TileOptions.prototype.opacity; - - -/** - * Preload. Load low-resolution tiles up to `preload` levels. By default - * `preload` is `0`, which means no preloading. - * @type {number|undefined} - * @api - */ -olx.layer.TileOptions.prototype.preload; - - -/** - * Source for this layer. - * @type {ol.source.Tile} - * @api - */ -olx.layer.TileOptions.prototype.source; - - -/** - * Sets the layer as overlay on a map. The map will not manage this layer in its - * layers collection, and the layer will be rendered on top. This is useful for - * temporary layers. The standard way to add a layer to a map and have it - * managed by the map is to use {@link ol.Map#addLayer}. - * @type {ol.PluggableMap|undefined} - * @api - */ -olx.layer.TileOptions.prototype.map; - - -/** - * Visibility. Default is `true` (visible). - * @type {boolean|undefined} - * @api - */ -olx.layer.TileOptions.prototype.visible; - - -/** - * The bounding extent for layer rendering. The layer will not be rendered - * outside of this extent. - * @type {ol.Extent|undefined} - * @api - */ -olx.layer.TileOptions.prototype.extent; - - -/** - * The minimum resolution (inclusive) at which this layer will be visible. - * @type {number|undefined} - * @api - */ -olx.layer.TileOptions.prototype.minResolution; - - -/** - * The maximum resolution (exclusive) below which this layer will be visible. - * @type {number|undefined} - * @api - */ -olx.layer.TileOptions.prototype.maxResolution; - - -/** - * Use interim tiles on error. Default is `true`. - * @type {boolean|undefined} - * @api - */ -olx.layer.TileOptions.prototype.useInterimTilesOnError; - - -/** - * The z-index for layer rendering. At rendering time, the layers will be - * ordered, first by Z-index and then by position. The default Z-index is 0. - * @type {number|undefined} - * @api - */ -olx.layer.TileOptions.prototype.zIndex; - - -/** - * @typedef {{renderOrder: (ol.RenderOrderFunction|null|undefined), - * minResolution: (number|undefined), - * maxResolution: (number|undefined), - * opacity: (number|undefined), - * renderBuffer: (number|undefined), - * renderMode: (ol.layer.VectorRenderType|string|undefined), - * source: (ol.source.Vector|undefined), - * map: (ol.PluggableMap|undefined), - * declutter: (boolean|undefined), - * style: (ol.style.Style|Array.|ol.StyleFunction|undefined), - * maxTilesLoading: (number|undefined), - * updateWhileAnimating: (boolean|undefined), - * updateWhileInteracting: (boolean|undefined), - * visible: (boolean|undefined), - * zIndex: (number|undefined)}} - */ -olx.layer.VectorOptions; - - -/** - * Render mode for vector layers: - * * `'image'`: Vector layers are rendered as images. Great performance, but - * point symbols and texts are always rotated with the view and pixels are - * scaled during zoom animations. - * * `'vector'`: Vector layers are rendered as vectors. Most accurate rendering - * even during animations, but slower performance. - * Default is `vector`. - * @type {ol.layer.VectorRenderType|string|undefined} - * @api - */ -olx.layer.VectorOptions.prototype.renderMode; - - -/** - * Render order. Function to be used when sorting features before rendering. By - * default features are drawn in the order that they are created. Use `null` to - * avoid the sort, but get an undefined draw order. - * @type {ol.RenderOrderFunction|null|undefined} - * @api - */ -olx.layer.VectorOptions.prototype.renderOrder; - - -/** - * Sets the layer as overlay on a map. The map will not manage this layer in its - * layers collection, and the layer will be rendered on top. This is useful for - * temporary layers. The standard way to add a layer to a map and have it - * managed by the map is to use {@link ol.Map#addLayer}. - * @type {ol.PluggableMap|undefined} - * @api - */ -olx.layer.VectorOptions.prototype.map; - - -/** - * The bounding extent for layer rendering. The layer will not be rendered - * outside of this extent. - * @type {ol.Extent|undefined} - * @api - */ -olx.layer.VectorOptions.prototype.extent; - - -/** - * The minimum resolution (inclusive) at which this layer will be visible. - * @type {number|undefined} - * @api - */ -olx.layer.VectorOptions.prototype.minResolution; - - -/** - * The maximum resolution (exclusive) below which this layer will be visible. - * @type {number|undefined} - * @api - */ -olx.layer.VectorOptions.prototype.maxResolution; - - -/** - * Opacity. 0-1. Default is `1`. - * @type {number|undefined} - * @api - */ -olx.layer.VectorOptions.prototype.opacity; - - -/** - * The buffer around the viewport extent used by the renderer when getting - * features from the vector source for the rendering or hit-detection. - * Recommended value: the size of the largest symbol, line width or label. - * Default is 100 pixels. - * @type {number|undefined} - * @api - */ -olx.layer.VectorOptions.prototype.renderBuffer; - - -/** - * Source. - * @type {ol.source.Vector} - * @api - */ -olx.layer.VectorOptions.prototype.source; - - -/** - * Declutter images and text. Decluttering is applied to all image and text - * styles, and the priority is defined by the z-index of the style. Lower - * z-index means higher priority. Default is `false`. - * @type {boolean|undefined} - * @api - */ -olx.layer.VectorOptions.prototype.declutter; - - -/** - * Layer style. See {@link ol.style} for default style which will be used if - * this is not defined. - * @type {ol.style.Style|Array.|ol.StyleFunction|undefined} - * @api - */ -olx.layer.VectorOptions.prototype.style; - - -/** - * Maximum number tiles to load simultaneously. Default is `16`. - * @type {number|undefined} - */ -olx.layer.VectorOptions.prototype.maxTilesLoading; - -/** - * When set to `true`, feature batches will be recreated during animations. - * This means that no vectors will be shown clipped, but the setting will have a - * performance impact for large amounts of vector data. When set to `false`, - * batches will be recreated when no animation is active. Default is `false`. - * @type {boolean|undefined} - * @api - */ -olx.layer.VectorOptions.prototype.updateWhileAnimating; - - -/** - * When set to `true`, feature batches will be recreated during interactions. - * See also `updateWhileAnimating`. Default is `false`. - * @type {boolean|undefined} - * @api - */ -olx.layer.VectorOptions.prototype.updateWhileInteracting; - - -/** - * Visibility. Default is `true` (visible). - * @type {boolean|undefined} - * @api - */ -olx.layer.VectorOptions.prototype.visible; - - -/** - * The z-index for layer rendering. At rendering time, the layers will be - * ordered, first by Z-index and then by position. The default Z-index is 0. - * @type {number|undefined} - * @api - */ -olx.layer.VectorOptions.prototype.zIndex; - - -/** - * @typedef {{extent: (ol.Extent|undefined), - * map: (ol.PluggableMap|undefined), - * minResolution: (number|undefined), - * maxResolution: (number|undefined), - * opacity: (number|undefined), - * preload: (number|undefined), - * renderBuffer: (number|undefined), - * renderMode: (ol.layer.VectorTileRenderType|string|undefined), - * renderOrder: (ol.RenderOrderFunction|undefined), - * source: (ol.source.VectorTile|undefined), - * declutter: (boolean|undefined), - * style: (ol.style.Style|Array.|ol.StyleFunction|undefined), - * updateWhileAnimating: (boolean|undefined), - * updateWhileInteracting: (boolean|undefined), - * visible: (boolean|undefined), - * zIndex: (number|undefined)}} - */ -olx.layer.VectorTileOptions; - - -/** - * The buffer around the tile extent used by the renderer when getting features - * from the vector tile for the rendering or hit-detection. - * Recommended value: Vector tiles are usually generated with a buffer, so this - * value should match the largest possible buffer of the used tiles. It should - * be at least the size of the largest point symbol or line width. - * Default is 100 pixels. - * @type {number|undefined} - * @api - */ -olx.layer.VectorTileOptions.prototype.renderBuffer; - - -/** - * Render mode for vector tiles: - * * `'image'`: Vector tiles are rendered as images. Great performance, but - * point symbols and texts are always rotated with the view and pixels are - * scaled during zoom animations. - * * `'hybrid'`: Polygon and line elements are rendered as images, so pixels - * are scaled during zoom animations. Point symbols and texts are accurately - * rendered as vectors and can stay upright on rotated views. - * * `'vector'`: Vector tiles are rendered as vectors. Most accurate rendering - * even during animations, but slower performance than the other options. - * - * When `declutter` is set to `true`, `'hybrid'` will be used instead of - * `'image'`. The default is `'hybrid'`. - * @type {ol.layer.VectorTileRenderType|string|undefined} - * @api - */ -olx.layer.VectorTileOptions.prototype.renderMode; - - -/** - * Render order. Function to be used when sorting features before rendering. By - * default features are drawn in the order that they are created. - * @type {ol.RenderOrderFunction|undefined} - * @api - */ -olx.layer.VectorTileOptions.prototype.renderOrder; - - -/** - * Sets the layer as overlay on a map. The map will not manage this layer in its - * layers collection, and the layer will be rendered on top. This is useful for - * temporary layers. The standard way to add a layer to a map and have it - * managed by the map is to use {@link ol.Map#addLayer}. - * @type {ol.PluggableMap|undefined} - * @api - */ -olx.layer.VectorTileOptions.prototype.map; - - -/** - * The bounding extent for layer rendering. The layer will not be rendered - * outside of this extent. - * @type {ol.Extent|undefined} - * @api - */ -olx.layer.VectorTileOptions.prototype.extent; - - -/** - * The minimum resolution (inclusive) at which this layer will be visible. - * @type {number|undefined} - * @api - */ -olx.layer.VectorTileOptions.prototype.minResolution; - - -/** - * The maximum resolution (exclusive) below which this layer will be visible. - * @type {number|undefined} - * @api - */ -olx.layer.VectorTileOptions.prototype.maxResolution; - - -/** - * Opacity. 0-1. Default is `1`. - * @type {number|undefined} - * @api - */ -olx.layer.VectorTileOptions.prototype.opacity; - - -/** - * Preload. Load low-resolution tiles up to `preload` levels. By default - * `preload` is `0`, which means no preloading. - * @type {number|undefined} - * @api - */ -olx.layer.VectorTileOptions.prototype.preload; - - -/** - * Source. - * @type {ol.source.VectorTile|undefined} - * @api - */ -olx.layer.VectorTileOptions.prototype.source; - - -/** - * Declutter images and text. Decluttering is applied to all image and text - * styles, and the priority is defined by the z-index of the style. Lower - * z-index means higher priority. When set to `true`, a `renderMode` of - * `'image'` will be overridden with `'hybrid'`. Default is `false`. - * @type {boolean|undefined} - * @api - */ -olx.layer.VectorTileOptions.prototype.declutter; - - -/** - * Layer style. See {@link ol.style} for default style which will be used if - * this is not defined. - * @type {ol.style.Style|Array.|ol.StyleFunction|undefined} - * @api - */ -olx.layer.VectorTileOptions.prototype.style; - - -/** - * When set to `true`, feature batches will be recreated during animations. - * This means that no vectors will be shown clipped, but the setting will have a - * performance impact for large amounts of vector data. When set to `false`, - * batches will be recreated when no animation is active. Default is `false`. - * @type {boolean|undefined} - * @api - */ -olx.layer.VectorTileOptions.prototype.updateWhileAnimating; - - -/** - * When set to `true`, feature batches will be recreated during interactions. - * See also `updateWhileAnimating`. Default is `false`. - * @type {boolean|undefined} - * @api - */ -olx.layer.VectorTileOptions.prototype.updateWhileInteracting; - - -/** - * Visibility. Default is `true` (visible). - * @type {boolean|undefined} - * @api - */ -olx.layer.VectorTileOptions.prototype.visible; - - -/** - * The z-index for layer rendering. At rendering time, the layers will be - * ordered, first by Z-index and then by position. The default Z-index is 0. - * @type {number|undefined} - * @api - */ -olx.layer.VectorTileOptions.prototype.zIndex; - - /** * @typedef {{context: CanvasRenderingContext2D, * feature: (module:ol/Feature~Feature|ol.render.Feature), diff --git a/src/ol/layer/Group.js b/src/ol/layer/Group.js index eb11d36afd2..1c684987c68 100644 --- a/src/ol/layer/Group.js +++ b/src/ol/layer/Group.js @@ -15,6 +15,22 @@ import {assign, clear} from '../obj.js'; import SourceState from '../source/State.js'; +/** + * @typedef {Object} Options + * @property {number} [opacity=1] Opacity (0, 1). + * @property {boolean} [visible=true] Visibility. + * @property {ol.Extent} [extent] The bounding extent for layer rendering. The layer will not be + * rendered outside of this extent. + * @property {number} [zIndex=0] The z-index for layer rendering. At rendering time, the layers + * will be ordered, first by Z-index and then by position. + * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be + * visible. + * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will + * be visible. + * @property {(Array.|ol.Collection.)} [layers] Child layers. + */ + + /** * @enum {string} * @private @@ -32,13 +48,13 @@ const Property = { * * @constructor * @extends {module:ol/layer/Base~BaseLayer} - * @param {olx.layer.GroupOptions=} opt_options Layer options. + * @param {module:ol/layer/Group~Options=} opt_options Layer options. * @api */ const LayerGroup = function(opt_options) { const options = opt_options || {}; - const baseOptions = /** @type {olx.layer.GroupOptions} */ (assign({}, options)); + const baseOptions = /** @type {module:ol/layer/Group~Options} */ (assign({}, options)); delete baseOptions.layers; let layers = options.layers; diff --git a/src/ol/layer/Heatmap.js b/src/ol/layer/Heatmap.js index e668e8d183e..84b5f940fad 100644 --- a/src/ol/layer/Heatmap.js +++ b/src/ol/layer/Heatmap.js @@ -13,6 +13,30 @@ import Icon from '../style/Icon.js'; import Style from '../style/Style.js'; +/** + * @typedef {Object} Options + * @property {number} [opacity=1] Opacity (0, 1). + * @property {boolean} [visible=true] Visibility. + * @property {ol.Extent} [extent] The bounding extent for layer rendering. The layer will not be + * rendered outside of this extent. + * @property {number} [zIndex=0] The z-index for layer rendering. At rendering time, the layers + * will be ordered, first by Z-index and then by position. + * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be + * visible. + * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will + * be visible. + * @property {Array.} [gradient=['#00f', '#0ff', '#0f0', '#ff0', '#f00']] The color gradient + * of the heatmap, specified as an array of CSS color strings. + * @property {number} [radius=8] Radius size in pixels. + * @property {number} [blur=15] Blur size in pixels. + * @property {number} [shadow=250] Shadow size in pixels. + * @property {string|function(module:ol/Feature~Feature):number} [weight='weight'] The feature + * attribute to use for the weight or a function that returns a weight from a feature. Weight values + * should range from 0 to 1 (and values outside will be clamped to that range). + * @property {ol.source.Vector} [source] Source. + */ + + /** * @enum {string} * @private @@ -41,7 +65,7 @@ const DEFAULT_GRADIENT = ['#00f', '#0ff', '#0f0', '#ff0', '#f00']; * @constructor * @extends {module:ol/layer/Vector~VectorLayer} * @fires ol.render.Event - * @param {olx.layer.HeatmapOptions=} opt_options Options. + * @param {module:ol/layer/Heatmap~Options=} opt_options Options. * @api */ const Heatmap = function(opt_options) { @@ -54,7 +78,7 @@ const Heatmap = function(opt_options) { delete baseOptions.blur; delete baseOptions.shadow; delete baseOptions.weight; - VectorLayer.call(this, /** @type {olx.layer.VectorOptions} */ (baseOptions)); + VectorLayer.call(this, /** @type {module:ol/layer/Vector~Options} */ (baseOptions)); /** * @private diff --git a/src/ol/layer/Image.js b/src/ol/layer/Image.js index 641199158dc..ee965cd1c73 100644 --- a/src/ol/layer/Image.js +++ b/src/ol/layer/Image.js @@ -5,6 +5,27 @@ import {inherits} from '../index.js'; import LayerType from '../LayerType.js'; import Layer from '../layer/Layer.js'; + +/** + * @typedef {Object} Options + * @property {number} [opacity=1] Opacity (0, 1). + * @property {boolean} [visible=true] Visibility. + * @property {ol.Extent} [extent] The bounding extent for layer rendering. The layer will not be + * rendered outside of this extent. + * @property {number} [zIndex=0] The z-index for layer rendering. At rendering time, the layers + * will be ordered, first by Z-index and then by position. + * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be + * visible. + * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will + * be visible. + * @property {ol.PluggableMap} [map] Sets the layer as overlay on a map. The map will not manage + * this layer in its layers collection, and the layer will be rendered on top. This is useful for + * temporary layers. The standard way to add a layer to a map and have it managed by the map is to + * use {@link ol.Map#addLayer}. + * @property {ol.source.Image} [source] Source for this layer. + */ + + /** * @classdesc * Server-rendered images that are available for arbitrary extents and @@ -16,12 +37,12 @@ import Layer from '../layer/Layer.js'; * @constructor * @extends {module:ol/layer/Layer~Layer} * @fires ol.render.Event - * @param {olx.layer.ImageOptions=} opt_options Layer options. + * @param {module:ol/layer/Image~Options=} opt_options Layer options. * @api */ const ImageLayer = function(opt_options) { const options = opt_options ? opt_options : {}; - Layer.call(this, /** @type {olx.layer.LayerOptions} */ (options)); + Layer.call(this, /** @type {module:ol/layer/Layer~Options} */ (options)); /** * The layer type. diff --git a/src/ol/layer/Layer.js b/src/ol/layer/Layer.js index 64a664e9b7d..e77863d241b 100644 --- a/src/ol/layer/Layer.js +++ b/src/ol/layer/Layer.js @@ -12,6 +12,24 @@ import RenderEventType from '../render/EventType.js'; import SourceState from '../source/State.js'; +/** + * @typedef {Object} Options + * @property {number} [opacity=1] Opacity (0, 1). + * @property {boolean} [visible=true] Visibility. + * @property {ol.Extent} [extent] The bounding extent for layer rendering. The layer will not be + * rendered outside of this extent. + * @property {number} [zIndex=0] The z-index for layer rendering. At rendering time, the layers + * will be ordered, first by Z-index and then by position. + * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be + * visible. + * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will + * be visible. + * @property {ol.source.Source} [source] Source for this layer. If not provided to the constructor, + * the source can be set by calling {@link ol.layer.Layer#setSource layer.setSource(source)} after + * construction. + */ + + /** * @typedef {Object} State * @property {module:ol/layer/Layer~Layer} layer @@ -45,7 +63,7 @@ import SourceState from '../source/State.js'; * @abstract * @extends {module:ol/layer/Base~BaseLayer} * @fires ol.render.Event - * @param {olx.layer.LayerOptions} options Layer options. + * @param {module:ol/layer/Layer~Options} options Layer options. * @api */ const Layer = function(options) { diff --git a/src/ol/layer/Tile.js b/src/ol/layer/Tile.js index 1f93ccbc1af..c00349f5a2f 100644 --- a/src/ol/layer/Tile.js +++ b/src/ol/layer/Tile.js @@ -7,6 +7,30 @@ import Layer from '../layer/Layer.js'; import TileProperty from '../layer/TileProperty.js'; import {assign} from '../obj.js'; + +/** + * @typedef {Object} Options + * @property {number} [opacity=1] Opacity (0, 1). + * @property {boolean} [visible=true] Visibility. + * @property {ol.Extent} [extent] The bounding extent for layer rendering. The layer will not be + * rendered outside of this extent. + * @property {number} [zIndex=0] The z-index for layer rendering. At rendering time, the layers + * will be ordered, first by Z-index and then by position. + * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be + * visible. + * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will + * be visible. + * @property {number} [preload=0] Preload. Load low-resolution tiles up to `preload` levels. `0` + * means no preloading. + * @property {ol.source.Tile} [source] Source for this layer. + * @property {ol.PluggableMap} [map] Sets the layer as overlay on a map. The map will not manage + * this layer in its layers collection, and the layer will be rendered on top. This is useful for + * temporary layers. The standard way to add a layer to a map and have it managed by the map is to + * use {@link ol.Map#addLayer}. + * @property {boolean} [useInterimTilesOnError=true] Use interim tiles on error. + */ + + /** * @classdesc * For layer sources that provide pre-rendered, tiled images in grids that are @@ -18,7 +42,7 @@ import {assign} from '../obj.js'; * @constructor * @extends {module:ol/layer/Layer~Layer} * @fires ol.render.Event - * @param {olx.layer.TileOptions=} opt_options Tile layer options. + * @param {module:ol/layer/Tile~Options=} opt_options Tile layer options. * @api */ const TileLayer = function(opt_options) { @@ -28,7 +52,7 @@ const TileLayer = function(opt_options) { delete baseOptions.preload; delete baseOptions.useInterimTilesOnError; - Layer.call(this, /** @type {olx.layer.LayerOptions} */ (baseOptions)); + Layer.call(this, /** @type {module:ol/layer/Layer~Options} */ (baseOptions)); this.setPreload(options.preload !== undefined ? options.preload : 0); this.setUseInterimTilesOnError(options.useInterimTilesOnError !== undefined ? diff --git a/src/ol/layer/Vector.js b/src/ol/layer/Vector.js index 827c4982cdd..e2a8fdaa628 100644 --- a/src/ol/layer/Vector.js +++ b/src/ol/layer/Vector.js @@ -9,6 +9,49 @@ import {assign} from '../obj.js'; import {createDefaultStyle, toFunction as toStyleFunction} from '../style/Style.js'; +/** + * @typedef {Object} Options + * @property {number} [opacity=1] Opacity (0, 1). + * @property {boolean} [visible=true] Visibility. + * @property {ol.Extent} [extent] The bounding extent for layer rendering. The layer will not be + * rendered outside of this extent. + * @property {number} [zIndex=0] The z-index for layer rendering. At rendering time, the layers + * will be ordered, first by Z-index and then by position. + * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be + * visible. + * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will + * be visible. + * @property {ol.RenderOrderFunction} [renderOrder] Render order. Function to be used when sorting + * features before rendering. By default features are drawn in the order that they are created. Use + * `null` to avoid the sort, but get an undefined draw order. + * @property {number} [renderBuffer=100] The buffer in pixels around the viewport extent used by the + * renderer when getting features from the vector source for the rendering or hit-detection. + * Recommended value: the size of the largest symbol, line width or label. + * @property {ol.layer.VectorRenderType|string} [renderMode='vector'] Render mode for vector layers: + * * `'image'`: Vector layers are rendered as images. Great performance, but point symbols and + * texts are always rotated with the view and pixels are scaled during zoom animations. + * * `'vector'`: Vector layers are rendered as vectors. Most accurate rendering even during + * animations, but slower performance. + * @property {ol.source.Vector} [source] Source. + * @property {ol.PluggableMap} [map] Sets the layer as overlay on a map. The map will not manage + * this layer in its layers collection, and the layer will be rendered on top. This is useful for + * temporary layers. The standard way to add a layer to a map and have it managed by the map is to + * use {@link ol.Map#addLayer}. + * @property {boolean} [declutter=false] Declutter images and text. Decluttering is applied to all + * image and text styles, and the priority is defined by the z-index of the style. Lower z-index + * means higher priority. + * @property {ol.style.Style|Array.|ol.StyleFunction} [style] Layer style. See + * {@link ol.style} for default style which will be used if this is not defined. + * @property {number} [maxTilesLoading=16] Maximum number tiles to load simultaneously. + * @property {boolean} [updateWhileAnimating=false] When set to `true`, feature batches will be + * recreated during animations. This means that no vectors will be shown clipped, but the setting + * will have a performance impact for large amounts of vector data. When set to `false`, batches + * will be recreated when no animation is active. + * @property {boolean} [updateWhileInteracting=false] When set to `true`, feature batches will be + * recreated during interactions. See also `updateWhileAnimating`. + */ + + /** * @enum {string} * @private @@ -28,12 +71,12 @@ const Property = { * @constructor * @extends {module:ol/layer/Layer~Layer} * @fires ol.render.Event - * @param {olx.layer.VectorOptions=} opt_options Options. + * @param {module:ol/layer/Vector~Options=} opt_options Options. * @api */ const VectorLayer = function(opt_options) { const options = opt_options ? - opt_options : /** @type {olx.layer.VectorOptions} */ ({}); + opt_options : /** @type {module:ol/layer/Vector~Options} */ ({}); const baseOptions = assign({}, options); @@ -41,7 +84,7 @@ const VectorLayer = function(opt_options) { delete baseOptions.renderBuffer; delete baseOptions.updateWhileAnimating; delete baseOptions.updateWhileInteracting; - Layer.call(this, /** @type {olx.layer.LayerOptions} */ (baseOptions)); + Layer.call(this, /** @type {module:ol/layer/Layer~Options} */ (baseOptions)); /** * @private diff --git a/src/ol/layer/VectorTile.js b/src/ol/layer/VectorTile.js index 48ca9e73025..309f6c1f3c6 100644 --- a/src/ol/layer/VectorTile.js +++ b/src/ol/layer/VectorTile.js @@ -9,6 +9,65 @@ import VectorLayer from '../layer/Vector.js'; import VectorTileRenderType from '../layer/VectorTileRenderType.js'; import {assign} from '../obj.js'; + +/** + * @typedef {Object} Options + * @property {number} [opacity=1] Opacity (0, 1). + * @property {boolean} [visible=true] Visibility. + * @property {ol.Extent} [extent] The bounding extent for layer rendering. The layer will not be + * rendered outside of this extent. + * @property {number} [zIndex=0] The z-index for layer rendering. At rendering time, the layers + * will be ordered, first by Z-index and then by position. + * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be + * visible. + * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will + * be visible. + * @property {ol.RenderOrderFunction} [renderOrder] Render order. Function to be used when sorting + * features before rendering. By default features are drawn in the order that they are created. Use + * `null` to avoid the sort, but get an undefined draw order. + * @property {number} [renderBuffer=100] The buffer in pixels around the tile extent used by the + * renderer when getting features from the vector tile for the rendering or hit-detection. + * Recommended value: Vector tiles are usually generated with a buffer, so this value should match + * the largest possible buffer of the used tiles. It should be at least the size of the largest + * point symbol or line width. + * @property {ol.layer.VectorRenderType|string} [renderMode='hybrid'] Render mode for vector tiles: + * * `'image'`: Vector tiles are rendered as images. Great performance, but point symbols and texts + * are always rotated with the view and pixels are scaled during zoom animations. + * * `'hybrid'`: Polygon and line elements are rendered as images, so pixels are scaled during zoom + * animations. Point symbols and texts are accurately rendered as vectors and can stay upright on + * rotated views. + * * `'vector'`: Vector tiles are rendered as vectors. Most accurate rendering even during + * animations, but slower performance than the other options. + * + * When `declutter` is set to `true`, `'hybrid'` will be used instead of `'image'`. + * @property {ol.source.VectorTile} [source] Source. + * @property {ol.PluggableMap} [map] Sets the layer as overlay on a map. The map will not manage + * this layer in its layers collection, and the layer will be rendered on top. This is useful for + * temporary layers. The standard way to add a layer to a map and have it managed by the map is to + * use {@link ol.Map#addLayer}. + * @property {boolean} [declutter=false] Declutter images and text. Decluttering is applied to all + * image and text styles, and the priority is defined by the z-index of the style. Lower z-index + * means higher priority. When set to `true`, a `renderMode` of `'image'` will be overridden with + * `'hybrid'`. + * @property {ol.style.Style|Array.|ol.StyleFunction} [style] Layer style. See + * {@link ol.style} for default style which will be used if this is not defined. + * @property {number} [maxTilesLoading=16] Maximum number tiles to load simultaneously. + * @property {boolean} [updateWhileAnimating=false] When set to `true`, feature batches will be + * recreated during animations. This means that no vectors will be shown clipped, but the setting + * will have a performance impact for large amounts of vector data. When set to `false`, batches + * will be recreated when no animation is active. + * @property {boolean} [updateWhileInteracting=false] When set to `true`, feature batches will be + * recreated during interactions. See also `updateWhileAnimating`. + * @property {number} [preload=0] Preload. Load low-resolution tiles up to `preload` levels. `0` + * means no preloading. + * @property {ol.RenderOrderFunction} [renderOrder] Render order. Function to be used when sorting + * features before rendering. By default features are drawn in the order that they are created. + * @property {(ol.style.Style|Array.|ol.StyleFunction)} [style] Layer style. See + * {@link ol.style} for default style which will be used if this is not defined. + * @property {boolean} [useInterimTilesOnError=true] Use interim tiles on error. + */ + + /** * @classdesc * Layer for vector tile data that is rendered client-side. @@ -18,7 +77,7 @@ import {assign} from '../obj.js'; * * @constructor * @extends {module:ol/layer/Vector~VectorLayer} - * @param {olx.layer.VectorTileOptions=} opt_options Options. + * @param {module:ol/layer/VectorTile~Options=} opt_options Options. * @api */ const VectorTileLayer = function(opt_options) { @@ -39,10 +98,10 @@ const VectorTileLayer = function(opt_options) { delete baseOptions.preload; delete baseOptions.useInterimTilesOnError; - VectorLayer.call(this, /** @type {olx.layer.VectorOptions} */ (baseOptions)); + VectorLayer.call(this, /** @type {module:ol/layer/Vector~Options} */ (baseOptions)); this.setPreload(options.preload ? options.preload : 0); - this.setUseInterimTilesOnError(options.useInterimTilesOnError ? + this.setUseInterimTilesOnError(options.useInterimTilesOnError !== undefined ? options.useInterimTilesOnError : true); /**