From 0b8a98d9a69c691ae4aa05acba7887a533d56e93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Junod?= Date: Wed, 3 Aug 2011 15:47:06 +0000 Subject: [PATCH] handle features with null bounds in OpenLayers.Renderer.Canvas.drawFeature. p=arublev,me r=erilem (closes #3442) git-svn-id: http://svn.openlayers.org/trunk/openlayers@12205 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Renderer/Canvas.js | 5 +++-- tests/Renderer/Canvas.html | 11 ++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/OpenLayers/Renderer/Canvas.js b/lib/OpenLayers/Renderer/Canvas.js index a934363ec7..d9e7828469 100644 --- a/lib/OpenLayers/Renderer/Canvas.js +++ b/lib/OpenLayers/Renderer/Canvas.js @@ -140,8 +140,9 @@ OpenLayers.Renderer.Canvas = OpenLayers.Class(OpenLayers.Renderer, { if (feature.geometry) { style = this.applyDefaultSymbolizer(style || feature.style); // don't render if display none or feature outside extent - rendered = (style.display !== "none") && - feature.geometry.getBounds().intersectsBounds(this.extent); + var bounds = feature.geometry.getBounds(); + rendered = (style.display !== "none") && !!bounds && + bounds.intersectsBounds(this.extent); if (rendered) { // keep track of what we have rendered for redraw this.features[feature.id] = [feature, style]; diff --git a/tests/Renderer/Canvas.html b/tests/Renderer/Canvas.html index d32c0b942b..c4bef1259a 100644 --- a/tests/Renderer/Canvas.html +++ b/tests/Renderer/Canvas.html @@ -123,7 +123,7 @@ return; } - t.plan(8); + t.plan(10); var layer = new OpenLayers.Layer.Vector(null, { isBaseLayer: true, renderers: ["Canvas"] @@ -183,6 +183,15 @@ t.eq(count, 1, "d) redraw is called when drawing a feature outside renderer extent"); renderer.clear(); + // e) draw a polygon feature without bounds + count = 0; + exp = renderer.drawFeature( + new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon()), {} + ); + t.eq(exp, false, "d) drawFeature returns false"); + t.eq(count, 1, "d) redraw is called when drawing a feature without bounds"); + renderer.clear(); + map.destroy(); }