Render simplified geometries in replay mode
This commit is contained in:
@@ -15,10 +15,12 @@ goog.require('ol.style.Style');
|
|||||||
* @param {ol.render.IReplayGroup} replayGroup Replay group.
|
* @param {ol.render.IReplayGroup} replayGroup Replay group.
|
||||||
* @param {ol.Feature} feature Feature.
|
* @param {ol.Feature} feature Feature.
|
||||||
* @param {ol.style.Style} style Style.
|
* @param {ol.style.Style} style Style.
|
||||||
|
* @param {number} squaredTolerance Squared tolerance.
|
||||||
* @param {Object} data Opaque data object.
|
* @param {Object} data Opaque data object.
|
||||||
*/
|
*/
|
||||||
ol.renderer.vector.renderFeature = function(replayGroup, feature, style, data) {
|
ol.renderer.vector.renderFeature = function(
|
||||||
var geometry = feature.getGeometry();
|
replayGroup, feature, style, squaredTolerance, data) {
|
||||||
|
var geometry = feature.getGeometry().getSimplifiedGeometry(squaredTolerance);
|
||||||
var geometryRenderer =
|
var geometryRenderer =
|
||||||
ol.renderer.vector.GEOMETRY_RENDERERS_[geometry.getType()];
|
ol.renderer.vector.GEOMETRY_RENDERERS_[geometry.getType()];
|
||||||
goog.asserts.assert(goog.isDef(geometryRenderer));
|
goog.asserts.assert(goog.isDef(geometryRenderer));
|
||||||
|
|||||||
@@ -218,6 +218,8 @@ ol.renderer.canvas.VectorLayer.prototype.renderFeature =
|
|||||||
function(feature, resolution, styleFunction, replayGroup) {
|
function(feature, resolution, styleFunction, replayGroup) {
|
||||||
var loading = false;
|
var loading = false;
|
||||||
var styles = styleFunction(feature, resolution);
|
var styles = styleFunction(feature, resolution);
|
||||||
|
// simplify to a tolerance of half a CSS pixel
|
||||||
|
var squaredTolerance = resolution * resolution / 4;
|
||||||
var i, ii, style, imageStyle, imageState;
|
var i, ii, style, imageStyle, imageState;
|
||||||
for (i = 0, ii = styles.length; i < ii; ++i) {
|
for (i = 0, ii = styles.length; i < ii; ++i) {
|
||||||
style = styles[i];
|
style = styles[i];
|
||||||
@@ -228,12 +230,14 @@ ol.renderer.canvas.VectorLayer.prototype.renderFeature =
|
|||||||
this.handleImageStyleChange_, false, this);
|
this.handleImageStyleChange_, false, this);
|
||||||
imageStyle.load();
|
imageStyle.load();
|
||||||
} else if (imageStyle.imageState == ol.style.ImageState.LOADED) {
|
} else if (imageStyle.imageState == ol.style.ImageState.LOADED) {
|
||||||
ol.renderer.vector.renderFeature(replayGroup, feature, style, feature);
|
ol.renderer.vector.renderFeature(
|
||||||
|
replayGroup, feature, style, squaredTolerance, feature);
|
||||||
}
|
}
|
||||||
goog.asserts.assert(imageStyle.imageState != ol.style.ImageState.IDLE);
|
goog.asserts.assert(imageStyle.imageState != ol.style.ImageState.IDLE);
|
||||||
loading = imageStyle.imageState == ol.style.ImageState.LOADING;
|
loading = imageStyle.imageState == ol.style.ImageState.LOADING;
|
||||||
} else {
|
} else {
|
||||||
ol.renderer.vector.renderFeature(replayGroup, feature, style, feature);
|
ol.renderer.vector.renderFeature(
|
||||||
|
replayGroup, feature, style, squaredTolerance, feature);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return loading;
|
return loading;
|
||||||
|
|||||||
Reference in New Issue
Block a user