Render features even while animating and interacting

This commit is contained in:
Tom Payne
2013-11-04 16:29:09 +01:00
parent 91fc1a7663
commit d774d2007d
@@ -3,7 +3,6 @@ goog.provide('ol.renderer.canvas.VectorLayer2');
goog.require('goog.dom'); goog.require('goog.dom');
goog.require('goog.dom.TagName'); goog.require('goog.dom.TagName');
goog.require('goog.vec.Mat4'); goog.require('goog.vec.Mat4');
goog.require('ol.ViewHint');
goog.require('ol.extent'); goog.require('ol.extent');
goog.require('ol.layer.Vector'); goog.require('ol.layer.Vector');
goog.require('ol.renderer.canvas.Layer'); goog.require('ol.renderer.canvas.Layer');
@@ -80,54 +79,48 @@ ol.renderer.canvas.VectorLayer2.prototype.composeFrame =
var vectorLayer = this.getVectorLayer(); var vectorLayer = this.getVectorLayer();
var hints = frameState.viewHints; var features = vectorLayer.getFeaturesObjectForExtent(extent,
viewProjection, this.requestMapRenderFrame_);
if (this.renderedResolution_ === 0 || if (goog.isNull(features)) {
(!hints[ol.ViewHint.ANIMATING] && !hints[ol.ViewHint.INTERACTING])) { return;
}
var features = vectorLayer.getFeaturesObjectForExtent(extent, this.renderedResolution_ = viewResolution;
viewProjection, this.requestMapRenderFrame_); this.renderedExtent_ = extent;
if (goog.isNull(features)) { var canvasWidth = frameState.size[0];
return; var canvasHeight = frameState.size[1];
}
this.renderedResolution_ = viewResolution; var halfWidth = canvasWidth;
this.renderedExtent_ = extent; var halfHeight = canvasHeight;
var canvasWidth = frameState.size[0]; // transform for map coords to sketch canvas pixel coords
var canvasHeight = frameState.size[1]; var coordsTransform = this.coordsTransform_;
var origin = ol.extent.getTopLeft(extent);
goog.vec.Mat4.makeIdentity(coordsTransform);
goog.vec.Mat4.translate(coordsTransform,
halfWidth, halfHeight, 0);
goog.vec.Mat4.scale(coordsTransform,
1 / viewResolution, -1 / viewResolution, 1);
goog.vec.Mat4.translate(coordsTransform,
-(origin[0] + halfWidth * viewResolution),
-(origin[1] - halfHeight * viewResolution),
0);
var renderer = new ol.renderer.canvas.Vector(context, coordsTransform,
this.requestMapRenderFrame_);
var halfWidth = canvasWidth; var groups = vectorLayer.groupFeaturesBySymbolizerLiteral(features,
var halfHeight = canvasHeight; viewResolution);
// transform for map coords to sketch canvas pixel coords var i, ii, group, deferred;
var coordsTransform = this.coordsTransform_;
var origin = ol.extent.getTopLeft(extent);
goog.vec.Mat4.makeIdentity(coordsTransform);
goog.vec.Mat4.translate(coordsTransform,
halfWidth, halfHeight, 0);
goog.vec.Mat4.scale(coordsTransform,
1 / viewResolution, -1 / viewResolution, 1);
goog.vec.Mat4.translate(coordsTransform,
-(origin[0] + halfWidth * viewResolution),
-(origin[1] - halfHeight * viewResolution),
0);
var renderer = new ol.renderer.canvas.Vector(context, coordsTransform,
this.requestMapRenderFrame_);
var groups = vectorLayer.groupFeaturesBySymbolizerLiteral(features, ii = groups.length;
viewResolution); for (i = 0; i < ii; ++i) {
group = groups[i];
var i, ii, group, deferred; deferred = renderer.renderFeatures(group[0], group[1], group[2]);
if (deferred) {
ii = groups.length; break;
for (i = 0; i < ii; ++i) {
group = groups[i];
deferred = renderer.renderFeatures(group[0], group[1], group[2]);
if (deferred) {
break;
}
} }
} }