Add ol.renderer.vector.getSquaredTolerance and ol.SIMPLIFY_TOLERANCE
This commit is contained in:
@@ -174,8 +174,6 @@ ol.FeatureOverlay.prototype.handleMapPostCompose_ = function(event) {
|
||||
var frameState = event.frameState;
|
||||
var pixelRatio = frameState.pixelRatio;
|
||||
var resolution = frameState.view2DState.resolution;
|
||||
var squaredTolerance =
|
||||
resolution * resolution / (4 * pixelRatio * pixelRatio);
|
||||
var i, ii, styles;
|
||||
this.features_.forEach(function(feature) {
|
||||
styles = styleFunction(feature, resolution);
|
||||
@@ -185,7 +183,8 @@ ol.FeatureOverlay.prototype.handleMapPostCompose_ = function(event) {
|
||||
ii = styles.length;
|
||||
for (i = 0; i < ii; ++i) {
|
||||
ol.renderer.vector.renderFeature(replayGroup, feature, styles[i],
|
||||
squaredTolerance, feature, this.handleImageChange_, this);
|
||||
ol.renderer.vector.getSquaredTolerance(resolution, pixelRatio),
|
||||
feature, this.handleImageChange_, this);
|
||||
}
|
||||
}, this);
|
||||
};
|
||||
|
||||
@@ -238,7 +238,7 @@ ol.geom.flat.simplify.radialDistance = function(flatCoordinates, offset, end,
|
||||
|
||||
/**
|
||||
* @param {number} value Value.
|
||||
* @param {number} tolerance Squared tolerance.
|
||||
* @param {number} tolerance Tolerance.
|
||||
* @return {number} Rounded value.
|
||||
*/
|
||||
ol.geom.flat.simplify.snap = function(value, tolerance) {
|
||||
@@ -259,7 +259,7 @@ ol.geom.flat.simplify.snap = function(value, tolerance) {
|
||||
* @param {number} offset Offset.
|
||||
* @param {number} end End.
|
||||
* @param {number} stride Stride.
|
||||
* @param {number} tolerance Squared tolerance.
|
||||
* @param {number} tolerance Tolerance.
|
||||
* @param {Array.<number>} simplifiedFlatCoordinates Simplified flat
|
||||
* coordinates.
|
||||
* @param {number} simplifiedOffset Simplified offset.
|
||||
|
||||
@@ -173,6 +173,12 @@ ol.MOUSEWHEELZOOM_TIMEOUT_DURATION = 80;
|
||||
ol.ROTATE_ANIMATION_DURATION = 250;
|
||||
|
||||
|
||||
/**
|
||||
* @define {number} Tolerance for geometry simplification in device pixels.
|
||||
*/
|
||||
ol.SIMPLIFY_TOLERANCE = 0.5;
|
||||
|
||||
|
||||
/**
|
||||
* @define {number} Texture cache high water mark.
|
||||
*/
|
||||
|
||||
@@ -24,6 +24,27 @@ ol.renderer.vector.defaultOrder = function(feature1, feature2) {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {number} resolution Resolution.
|
||||
* @param {number} pixelRatio Pixel ratio.
|
||||
* @return {number} Squared pixel tolerance.
|
||||
*/
|
||||
ol.renderer.vector.getSquaredTolerance = function(resolution, pixelRatio) {
|
||||
var tolerance = ol.renderer.vector.getTolerance(resolution, pixelRatio);
|
||||
return tolerance * tolerance;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {number} resolution Resolution.
|
||||
* @param {number} pixelRatio Pixel ratio.
|
||||
* @return {number} Pixel tolerance.
|
||||
*/
|
||||
ol.renderer.vector.getTolerance = function(resolution, pixelRatio) {
|
||||
return ol.SIMPLIFY_TOLERANCE * resolution / pixelRatio;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.render.IReplayGroup} replayGroup Replay group.
|
||||
* @param {ol.geom.Geometry} geometry Geometry.
|
||||
|
||||
@@ -23,6 +23,7 @@ goog.require('ol.renderer.canvas.ImageLayer');
|
||||
goog.require('ol.renderer.canvas.Layer');
|
||||
goog.require('ol.renderer.canvas.TileLayer');
|
||||
goog.require('ol.renderer.canvas.VectorLayer');
|
||||
goog.require('ol.renderer.vector');
|
||||
goog.require('ol.source.State');
|
||||
goog.require('ol.vec.Mat4');
|
||||
|
||||
@@ -112,8 +113,8 @@ ol.renderer.canvas.Map.prototype.dispatchComposeEvent_ =
|
||||
-view2DState.center[0], -view2DState.center[1]);
|
||||
var vectorContext = new ol.render.canvas.Immediate(context, pixelRatio,
|
||||
extent, this.transform_, rotation);
|
||||
var tolerance = resolution / (2 * pixelRatio);
|
||||
var replayGroup = new ol.render.canvas.ReplayGroup(tolerance, extent,
|
||||
var replayGroup = new ol.render.canvas.ReplayGroup(
|
||||
ol.renderer.vector.getTolerance(resolution, pixelRatio), extent,
|
||||
resolution);
|
||||
var composeEvent = new ol.render.Event(type, map, vectorContext,
|
||||
replayGroup, frameState, context, null);
|
||||
|
||||
@@ -206,9 +206,10 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
|
||||
if (!goog.isDef(styleFunction)) {
|
||||
styleFunction = ol.feature.defaultStyleFunction;
|
||||
}
|
||||
var tolerance = resolution / (2 * pixelRatio);
|
||||
var replayGroup =
|
||||
new ol.render.canvas.ReplayGroup(tolerance, extent, resolution);
|
||||
new ol.render.canvas.ReplayGroup(
|
||||
ol.renderer.vector.getTolerance(resolution, pixelRatio), extent,
|
||||
resolution);
|
||||
vectorSource.loadFeatures(extent, resolution, projection);
|
||||
var renderFeature =
|
||||
/**
|
||||
@@ -261,14 +262,12 @@ ol.renderer.canvas.VectorLayer.prototype.renderFeature =
|
||||
if (!goog.isDefAndNotNull(styles)) {
|
||||
return false;
|
||||
}
|
||||
// simplify to a tolerance of half a device pixel
|
||||
var squaredTolerance =
|
||||
resolution * resolution / (4 * pixelRatio * pixelRatio);
|
||||
var i, ii, loading = false;
|
||||
for (i = 0, ii = styles.length; i < ii; ++i) {
|
||||
loading = ol.renderer.vector.renderFeature(
|
||||
replayGroup, feature, styles[i], squaredTolerance, feature,
|
||||
this.handleImageChange_, this) || loading;
|
||||
replayGroup, feature, styles[i],
|
||||
ol.renderer.vector.getSquaredTolerance(resolution, pixelRatio),
|
||||
feature, this.handleImageChange_, this) || loading;
|
||||
}
|
||||
return loading;
|
||||
};
|
||||
|
||||
@@ -102,8 +102,8 @@ goog.inherits(ol.source.ImageVector, ol.source.ImageCanvas);
|
||||
ol.source.ImageVector.prototype.canvasFunctionInternal_ =
|
||||
function(extent, resolution, pixelRatio, size, projection) {
|
||||
|
||||
var tolerance = resolution / (2 * pixelRatio);
|
||||
var replayGroup = new ol.render.canvas.ReplayGroup(tolerance, extent,
|
||||
var replayGroup = new ol.render.canvas.ReplayGroup(
|
||||
ol.renderer.vector.getSquaredTolerance(resolution, pixelRatio), extent,
|
||||
resolution);
|
||||
|
||||
var loading = false;
|
||||
@@ -226,14 +226,12 @@ ol.source.ImageVector.prototype.renderFeature_ =
|
||||
if (!goog.isDefAndNotNull(styles)) {
|
||||
return false;
|
||||
}
|
||||
// simplify to a tolerance of half a device pixel
|
||||
var squaredTolerance =
|
||||
resolution * resolution / (4 * pixelRatio * pixelRatio);
|
||||
var i, ii, loading = false;
|
||||
for (i = 0, ii = styles.length; i < ii; ++i) {
|
||||
loading = ol.renderer.vector.renderFeature(
|
||||
replayGroup, feature, styles[i], squaredTolerance, feature,
|
||||
this.handleImageChange_, this) || loading;
|
||||
replayGroup, feature, styles[i],
|
||||
ol.renderer.vector.getSquaredTolerance(resolution, pixelRatio),
|
||||
feature, this.handleImageChange_, this) || loading;
|
||||
}
|
||||
return loading;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user