From c0148cae7c92479591aabfbce59b2ebc6ff4c0ab Mon Sep 17 00:00:00 2001 From: Roman Zoller Date: Thu, 22 Mar 2018 18:23:15 +0100 Subject: [PATCH 1/8] Move olx.layer.LayerOptions to ol/layer/Layer --- externs/olx.js | 72 ------------------------------------------ src/ol/layer/Image.js | 2 +- src/ol/layer/Layer.js | 20 +++++++++++- src/ol/layer/Tile.js | 2 +- src/ol/layer/Vector.js | 2 +- 5 files changed, 22 insertions(+), 76 deletions(-) diff --git a/externs/olx.js b/externs/olx.js index 9e3490116d7..1fdab4d0a01 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -5,78 +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), diff --git a/src/ol/layer/Image.js b/src/ol/layer/Image.js index 641199158dc..bbb1f73f3d4 100644 --- a/src/ol/layer/Image.js +++ b/src/ol/layer/Image.js @@ -21,7 +21,7 @@ import Layer from '../layer/Layer.js'; */ 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..3f581240999 100644 --- a/src/ol/layer/Tile.js +++ b/src/ol/layer/Tile.js @@ -28,7 +28,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..8830273691d 100644 --- a/src/ol/layer/Vector.js +++ b/src/ol/layer/Vector.js @@ -41,7 +41,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 From 1e476ae9e73ceb11e5d246ea9a57cd285b6a17cf Mon Sep 17 00:00:00 2001 From: Roman Zoller Date: Fri, 23 Mar 2018 09:11:43 +0100 Subject: [PATCH 2/8] Move olx.layer.GroupOptions to ol/layer/Group --- externs/olx.js | 70 ------------------------------------------- src/ol/layer/Group.js | 20 +++++++++++-- 2 files changed, 18 insertions(+), 72 deletions(-) diff --git a/externs/olx.js b/externs/olx.js index 1fdab4d0a01..6bfc8de381d 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -5,76 +5,6 @@ let olx; -/** - * @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), 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; From aa57bc86e55181ee694d6cfa57917e36505e1495 Mon Sep 17 00:00:00 2001 From: Roman Zoller Date: Fri, 23 Mar 2018 09:42:06 +0100 Subject: [PATCH 3/8] Move olx.layer.HeatmapOptions to ol/layer/Heatmap --- externs/olx.js | 118 ---------------------------------------- src/ol/layer/Heatmap.js | 26 ++++++++- 2 files changed, 25 insertions(+), 119 deletions(-) diff --git a/externs/olx.js b/externs/olx.js index 6bfc8de381d..31a1c492156 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -5,124 +5,6 @@ let olx; -/** - * @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), diff --git a/src/ol/layer/Heatmap.js b/src/ol/layer/Heatmap.js index e668e8d183e..9362db3f2a9 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) { From 34d5a38a9eed5d1b533830605792d2a5c17965c9 Mon Sep 17 00:00:00 2001 From: Roman Zoller Date: Fri, 23 Mar 2018 09:49:24 +0100 Subject: [PATCH 4/8] Move olx.layer.ImageOptions to ol/layer/Image --- externs/olx.js | 82 ------------------------------------------- src/ol/layer/Image.js | 23 +++++++++++- 2 files changed, 22 insertions(+), 83 deletions(-) diff --git a/externs/olx.js b/externs/olx.js index 31a1c492156..32e6573305e 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -5,88 +5,6 @@ let olx; -/** - * @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), diff --git a/src/ol/layer/Image.js b/src/ol/layer/Image.js index bbb1f73f3d4..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,7 +37,7 @@ 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) { From c24b36952319d3aab25446ff0a3754843f27b257 Mon Sep 17 00:00:00 2001 From: Roman Zoller Date: Fri, 23 Mar 2018 09:57:25 +0100 Subject: [PATCH 5/8] Move olx.layer.TileOptions to ol/layer/Tile --- externs/olx.js | 101 ------------------------------------------- src/ol/layer/Tile.js | 26 ++++++++++- 2 files changed, 25 insertions(+), 102 deletions(-) diff --git a/externs/olx.js b/externs/olx.js index 32e6573305e..63961dcc7e1 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -5,107 +5,6 @@ let olx; -/** - * @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), diff --git a/src/ol/layer/Tile.js b/src/ol/layer/Tile.js index 3f581240999..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) { From 41ecc4a7941b32ad825a6c00ac719c92b0287714 Mon Sep 17 00:00:00 2001 From: Roman Zoller Date: Fri, 23 Mar 2018 17:37:59 +0100 Subject: [PATCH 6/8] Move olx.layer.VectorOptions to ol/layer/Vector --- externs/olx.js | 169 ------------------------------------- src/ol/layer/Heatmap.js | 2 +- src/ol/layer/Vector.js | 47 ++++++++++- src/ol/layer/VectorTile.js | 2 +- 4 files changed, 47 insertions(+), 173 deletions(-) diff --git a/externs/olx.js b/externs/olx.js index 63961dcc7e1..0e4988ffb73 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -5,175 +5,6 @@ let olx; -/** - * @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), diff --git a/src/ol/layer/Heatmap.js b/src/ol/layer/Heatmap.js index 9362db3f2a9..84b5f940fad 100644 --- a/src/ol/layer/Heatmap.js +++ b/src/ol/layer/Heatmap.js @@ -78,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/Vector.js b/src/ol/layer/Vector.js index 8830273691d..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); diff --git a/src/ol/layer/VectorTile.js b/src/ol/layer/VectorTile.js index 48ca9e73025..d8e3085a777 100644 --- a/src/ol/layer/VectorTile.js +++ b/src/ol/layer/VectorTile.js @@ -39,7 +39,7 @@ 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 ? From 17a348e594c75f0a28fea8a473cc14d935a66b9d Mon Sep 17 00:00:00 2001 From: Roman Zoller Date: Fri, 23 Mar 2018 17:47:59 +0100 Subject: [PATCH 7/8] Move olx.layer.VectorTileOptions to ol/layer/VectorTile --- externs/olx.js | 180 ------------------------------------- src/ol/layer/VectorTile.js | 61 ++++++++++++- 2 files changed, 60 insertions(+), 181 deletions(-) diff --git a/externs/olx.js b/externs/olx.js index 0e4988ffb73..16bddc6b9bc 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 d8e3085a777..8265ae53dbd 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) { From 7ebe53d0582aff2990dee6d4f93a36c48faa3c69 Mon Sep 17 00:00:00 2001 From: Roman Zoller Date: Fri, 23 Mar 2018 18:04:07 +0100 Subject: [PATCH 8/8] Fix setting of useInterimTilesOnError With the previous check it was always set to `true`. --- src/ol/layer/VectorTile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ol/layer/VectorTile.js b/src/ol/layer/VectorTile.js index 8265ae53dbd..309f6c1f3c6 100644 --- a/src/ol/layer/VectorTile.js +++ b/src/ol/layer/VectorTile.js @@ -101,7 +101,7 @@ const VectorTileLayer = function(opt_options) { 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); /**