From 1685913a55a25cbd5afb550c934e7887059592e7 Mon Sep 17 00:00:00 2001 From: mike-000 <49240900+mike-000@users.noreply.github.com> Date: Wed, 17 Jun 2020 16:46:24 +0100 Subject: [PATCH 1/3] getExtent() return getEmpty() for invalid extents --- src/ol/geom/Geometry.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/ol/geom/Geometry.js b/src/ol/geom/Geometry.js index 2c1f4dff33..16e1a48a18 100644 --- a/src/ol/geom/Geometry.js +++ b/src/ol/geom/Geometry.js @@ -8,7 +8,12 @@ import { compose as composeTransform, create as createTransform, } from '../transform.js'; -import {createEmpty, getHeight, returnOrUpdate} from '../extent.js'; +import { + containsExtent, + createEmpty, + getHeight, + returnOrUpdate, +} from '../extent.js'; import {get as getProjection, getTransform} from '../proj.js'; import {memoizeOne} from '../functions.js'; import {transform2D} from './flat/transform.js'; @@ -170,6 +175,11 @@ class Geometry extends BaseObject { getExtent(opt_extent) { if (this.extentRevision_ != this.getRevision()) { this.extent_ = this.computeExtent(this.extent_); + if ( + !containsExtent([-Infinity, -Infinity, Infinity, Infinity], this.extent_) + ) { + this.extent_ = createEmpty(); + } this.extentRevision_ = this.getRevision(); } return returnOrUpdate(this.extent_, opt_extent); From 74b74e2478d8dc2d33252e903343636b1470e53c Mon Sep 17 00:00:00 2001 From: mike-000 <49240900+mike-000@users.noreply.github.com> Date: Wed, 17 Jun 2020 16:59:56 +0100 Subject: [PATCH 2/3] fix pettier --- src/ol/geom/Geometry.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ol/geom/Geometry.js b/src/ol/geom/Geometry.js index 16e1a48a18..cbcb4afc01 100644 --- a/src/ol/geom/Geometry.js +++ b/src/ol/geom/Geometry.js @@ -176,7 +176,10 @@ class Geometry extends BaseObject { if (this.extentRevision_ != this.getRevision()) { this.extent_ = this.computeExtent(this.extent_); if ( - !containsExtent([-Infinity, -Infinity, Infinity, Infinity], this.extent_) + !containsExtent( + [-Infinity, -Infinity, Infinity, Infinity], + this.extent_ + ) ) { this.extent_ = createEmpty(); } From 4c7a1817fa98dd954a23879cf57e78be937bb565 Mon Sep 17 00:00:00 2001 From: mike-000 <49240900+mike-000@users.noreply.github.com> Date: Wed, 24 Jun 2020 12:46:02 +0100 Subject: [PATCH 3/3] optimise check for NaN in extent --- src/ol/geom/Geometry.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/ol/geom/Geometry.js b/src/ol/geom/Geometry.js index cbcb4afc01..e7d7cd26f0 100644 --- a/src/ol/geom/Geometry.js +++ b/src/ol/geom/Geometry.js @@ -9,8 +9,8 @@ import { create as createTransform, } from '../transform.js'; import { - containsExtent, createEmpty, + createOrUpdateEmpty, getHeight, returnOrUpdate, } from '../extent.js'; @@ -174,14 +174,9 @@ class Geometry extends BaseObject { */ getExtent(opt_extent) { if (this.extentRevision_ != this.getRevision()) { - this.extent_ = this.computeExtent(this.extent_); - if ( - !containsExtent( - [-Infinity, -Infinity, Infinity, Infinity], - this.extent_ - ) - ) { - this.extent_ = createEmpty(); + const extent = this.computeExtent(this.extent_); + if (isNaN(extent[0]) || isNaN(extent[1])) { + createOrUpdateEmpty(extent); } this.extentRevision_ = this.getRevision(); }