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);
/**