From 633920d0f7c3fb43085a0c8984bf96fe2d00d512 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Thu, 7 Nov 2013 15:23:12 +0100 Subject: [PATCH] Buffer batch group extent --- .../renderer/canvas/canvasvectorlayerrenderer.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js index 3ed41c9a4d..b985fff032 100644 --- a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js +++ b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js @@ -106,13 +106,22 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame = var vectorLayer = this.getVectorLayer(); var vectorSource = vectorLayer.getVectorSource(); + var frameStateExtent = frameState.extent; if (this.renderedResolution_ == frameState.view2DState.resolution && this.renderedRevision_ == vectorSource.getRevision() && - ol.extent.containsExtent(this.renderedExtent_, frameState.extent)) { + ol.extent.containsExtent(this.renderedExtent_, frameStateExtent)) { return; } + var extent = this.renderedExtent_; + var xBuffer = ol.extent.getWidth(frameStateExtent) / 4; + var yBuffer = ol.extent.getHeight(frameStateExtent) / 4; + extent[0] = frameStateExtent[0] - xBuffer; + extent[1] = frameStateExtent[1] - yBuffer; + extent[2] = frameStateExtent[2] + xBuffer; + extent[3] = frameStateExtent[3] + yBuffer; + // FIXME dispose of old batchGroup in post render goog.dispose(this.batchGroup_); this.batchGroup = null; @@ -122,14 +131,13 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame = styleFunction = ol.style.DefaultStyleFunction; } var batchGroup = new ol.replay.canvas.BatchGroup(); - vectorSource.forEachFeatureInExtent(frameState.extent, function(feature) { + vectorSource.forEachFeatureInExtent(extent, function(feature) { var style = styleFunction(feature); ol.renderer.vector.renderFeature(batchGroup, feature, style); }, this); this.renderedResolution_ = frameState.view2DState.resolution; this.renderedRevision_ = vectorSource.getRevision(); - this.renderedExtent_ = frameState.extent; if (!batchGroup.isEmpty()) { this.batchGroup_ = batchGroup; }