Render features even while animating and interacting
This commit is contained in:
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user