From 5e505f200a1b87626de3da60e421a970dcc56ba9 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Tue, 28 Jul 2015 14:02:09 +0200 Subject: [PATCH] Snap center to pixel to avoid floating point issues --- src/ol/view.js | 6 +++++- .../spec/ol/layer/expected/image-webgl.png | Bin 3986 -> 2302 bytes 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ol/view.js b/src/ol/view.js index db4dd8a79f..542de34d26 100644 --- a/src/ol/view.js +++ b/src/ol/view.js @@ -400,7 +400,11 @@ ol.View.prototype.getState = function() { var resolution = /** @type {number} */ (this.getResolution()); var rotation = this.getRotation(); return /** @type {olx.ViewState} */ ({ - center: center.slice(), + // Snap center to closest pixel + center: [ + Math.round(center[0] / resolution) * resolution, + Math.round(center[1] / resolution) * resolution + ], projection: goog.isDef(projection) ? projection : null, resolution: resolution, rotation: rotation diff --git a/test_rendering/spec/ol/layer/expected/image-webgl.png b/test_rendering/spec/ol/layer/expected/image-webgl.png index e0e4a150d8f6ed41eec23770ba5a12bd6eb846ef..db33a226b7a5738b856b1dc4b719629d6d0b6370 100644 GIT binary patch delta 2291 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