From da1490dbe645ae7620d765e64a1c6da85d4dc633 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Fri, 18 Jul 2008 12:24:46 +0000 Subject: [PATCH] "Vector features won't draw in IE if features are very far outside the visible extent". r=elemoine (closes #1602) git-svn-id: http://svn.openlayers.org/trunk/openlayers@7546 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Renderer/VML.js | 19 ++- tests/manual/vector-features-performance.html | 134 ++++++++++++++++++ 2 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 tests/manual/vector-features-performance.html diff --git a/lib/OpenLayers/Renderer/VML.js b/lib/OpenLayers/Renderer/VML.js index c393f50137..018e0c857c 100644 --- a/lib/OpenLayers/Renderer/VML.js +++ b/lib/OpenLayers/Renderer/VML.js @@ -497,13 +497,30 @@ OpenLayers.Renderer.VML = OpenLayers.Class(OpenLayers.Renderer.Elements, { createRoot: function() { return this.nodeFactory(this.container.id + "_root", "olv:group"); }, + + /** + * Method: drawFeature + * Overrides the superclass's drawFeature method to take care of features + * that are outside the viewport. + * + * Parameters: + * feature - {} + * style - {} + */ + drawFeature: function(feature, style) { + if (!feature.geometry.getBounds().intersectsBounds(this.extent)) { + style = {display: "none"}; + } + OpenLayers.Renderer.Elements.prototype.drawFeature.apply(this, + [feature, style]); + }, /************************************** * * * GEOMETRY DRAWING FUNCTIONS * * * **************************************/ - + /** * Method: drawPoint * Render a point diff --git a/tests/manual/vector-features-performance.html b/tests/manual/vector-features-performance.html new file mode 100644 index 0000000000..0c5d6091e7 --- /dev/null +++ b/tests/manual/vector-features-performance.html @@ -0,0 +1,134 @@ + + + Vector Features Performance Test + + + + + + + +

Vector Features Performance Test

+
+

+ + This test examines if checking for a feature being inside the visible + extent before rendering it has an impact on performance. Make sure that + the Firebug console is visible when running this test to see the results. + +

+ +