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