diff --git a/externs/olx.js b/externs/olx.js index fbbac87ba0..f80a1c0467 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -6075,7 +6075,7 @@ olx.style.TextOptions.prototype.stroke; /** - * @typedef {{geometry: (undefined|string|ol.geom.Geometry|function(ol.Feature): ol.geom.Geometry), + * @typedef {{geometry: (undefined|string|ol.geom.Geometry|function(ol.Feature): (ol.geom.Geometry|undefined)), * fill: (ol.style.Fill|undefined), * image: (ol.style.Image|undefined), * stroke: (ol.style.Stroke|undefined), @@ -6089,7 +6089,7 @@ olx.style.StyleOptions; /** * Feature property or geometry or function returning a geometry to render * for this style. - * @type {undefined|string|ol.geom.Geometry|function(ol.Feature): ol.geom.Geometry} + * @type {undefined|string|ol.geom.Geometry|function(ol.Feature): (ol.geom.Geometry|undefined)} * @api */ olx.style.StyleOptions.prototype.geometry; diff --git a/src/ol/render/canvas/canvasimmediate.js b/src/ol/render/canvas/canvasimmediate.js index 2e19342f64..efaaac5893 100644 --- a/src/ol/render/canvas/canvasimmediate.js +++ b/src/ol/render/canvas/canvasimmediate.js @@ -478,7 +478,7 @@ ol.render.canvas.Immediate.prototype.drawCircleGeometry = */ ol.render.canvas.Immediate.prototype.drawFeature = function(feature, style) { var geometry = style.getGeometryFunction()(feature); - if (goog.isNull(geometry) || + if (!goog.isDefAndNotNull(geometry) || !ol.extent.intersects(this.extent_, geometry.getExtent())) { return; } diff --git a/src/ol/render/vector.js b/src/ol/render/vector.js index a1f3a3d832..e02c7ada18 100644 --- a/src/ol/render/vector.js +++ b/src/ol/render/vector.js @@ -124,7 +124,7 @@ ol.renderer.vector.renderFeature = function( ol.renderer.vector.renderFeature_ = function( replayGroup, feature, style, squaredTolerance) { var geometry = style.getGeometryFunction()(feature); - if (goog.isNull(geometry)) { + if (!goog.isDefAndNotNull(geometry)) { return; } var simplifiedGeometry = geometry.getSimplifiedGeometry(squaredTolerance); diff --git a/src/ol/render/webgl/webglimmediate.js b/src/ol/render/webgl/webglimmediate.js index 2a388b37fa..4c07223ade 100644 --- a/src/ol/render/webgl/webglimmediate.js +++ b/src/ol/render/webgl/webglimmediate.js @@ -119,7 +119,7 @@ ol.render.webgl.Immediate.prototype.drawCircleGeometry = */ ol.render.webgl.Immediate.prototype.drawFeature = function(feature, style) { var geometry = style.getGeometryFunction()(feature); - if (goog.isNull(geometry) || + if (!goog.isDefAndNotNull(geometry) || !ol.extent.intersects(this.extent_, geometry.getExtent())) { return; } diff --git a/src/ol/style/style.js b/src/ol/style/style.js index df2c619f85..6b1f33f6db 100644 --- a/src/ol/style/style.js +++ b/src/ol/style/style.js @@ -30,7 +30,7 @@ ol.style.Style = function(opt_options) { * Function that is called with a feature and returns the geometry to render * for this style. * @private - * @type {!function(ol.Feature): ol.geom.Geometry} + * @type {!function(ol.Feature): (ol.geom.Geometry|undefined)} */ this.geometryFunction_ = ol.style.defaultGeometryFunction; @@ -72,9 +72,9 @@ ol.style.Style = function(opt_options) { /** - * @return {!function(ol.Feature): ol.geom.Geometry} Function that is called - * with a feature and returns the geometry to render instead of the feature's - * geometry. + * @return {!function(ol.Feature): (ol.geom.Geometry|undefined)} Function that + * is called with a feature and returns the geometry to render instead of the + * feature's geometry. */ ol.style.Style.prototype.getGeometryFunction = function() { return this.geometryFunction_; @@ -129,7 +129,7 @@ ol.style.Style.prototype.getZIndex = function() { /** * Set a geometry that is rendered instead of the feature's geometry. * - * @param {string|ol.geom.Geometry|function(ol.Feature): ol.geom.Geometry} geometry + * @param {string|ol.geom.Geometry|function(ol.Feature): (ol.geom.Geometry|undefined)} geometry * Feature property or geometry or function returning a geometry to render * for this style. * @api @@ -318,10 +318,9 @@ ol.style.createDefaultEditingStyles = function() { /** * @param {ol.Feature} feature Feature to get the geometry for. - * @return {ol.geom.Geometry} Geometry to render. + * @return {ol.geom.Geometry|undefined} Geometry to render. */ ol.style.defaultGeometryFunction = function(feature) { goog.asserts.assert(!goog.isNull(feature)); - var geometry = feature.getGeometry(); - return goog.isDef(geometry) ? geometry : null; + return feature.getGeometry(); };