diff --git a/externs/olx.js b/externs/olx.js index 0e4988ffb7..16bddc6b9b 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -5,186 +5,6 @@ let olx; -/** - * @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/VectorTile.js b/src/ol/layer/VectorTile.js index d8e3085a77..8265ae53db 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) {