diff --git a/src/objectliterals.jsdoc b/src/objectliterals.jsdoc index 75fd408663..0cfd906f15 100644 --- a/src/objectliterals.jsdoc +++ b/src/objectliterals.jsdoc @@ -630,6 +630,10 @@ * @typedef {Object} olx.layer.VectorOptions * @property {number|undefined} brightness Brightness. * @property {number|undefined} contrast Contrast. + * @property {function(ol.Feature, ol.Feature):number|null|undefined} 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|undefined} hue Hue. * @property {number|undefined} minResolution The minimum resolution * (inclusive) at which this layer will be visible. diff --git a/src/ol/layer/vectorlayer.js b/src/ol/layer/vectorlayer.js index 4e55b7272f..5b457dff48 100644 --- a/src/ol/layer/vectorlayer.js +++ b/src/ol/layer/vectorlayer.js @@ -6,8 +6,17 @@ goog.require('ol.feature'); goog.require('ol.layer.Layer'); +/** + * @enum {string} + */ +ol.layer.VectorProperty = { + RENDER_ORDER: 'renderOrder' +}; + + /** + * * @constructor * @extends {ol.layer.Layer} * @fires {@link ol.render.Event} ol.render.Event @@ -46,6 +55,16 @@ ol.layer.Vector = function(opt_options) { goog.inherits(ol.layer.Vector, ol.layer.Layer); +/** + * @return {function(ol.Feature, ol.Feature): number|null|undefined} Render + * order. + */ +ol.layer.Vector.prototype.getRenderOrder = function() { + return /** @type {function(ol.Feature, ol.Feature):number|null|undefined} */ ( + this.get(ol.layer.VectorProperty.RENDER_ORDER)); +}; + + /** * Get the style for features. This returns whatever was passed to the `style` * option at construction or to the `setStyle` method. @@ -67,6 +86,15 @@ ol.layer.Vector.prototype.getStyleFunction = function() { }; +/** + * @param {function(ol.Feature, ol.Feature):number|null|undefined} renderOrder + * Render order. + */ +ol.layer.Vector.prototype.setRenderOrder = function(renderOrder) { + this.set(ol.layer.VectorProperty.RENDER_ORDER, renderOrder); +}; + + /** * Set the style for features. This can be a single style object, an array * of styles, or a function that takes a feature and resolution and returns