Merge pull request #7563 from ahocevar/declutter-box-precision

Use full precision for the declutter box
This commit is contained in:
Andreas Hocevar
2017-12-11 10:51:31 +01:00
committed by GitHub
2 changed files with 20 additions and 18 deletions
+6 -4
View File
@@ -226,10 +226,6 @@ ol.render.canvas.Replay.prototype.replayImage_ = function(context, x, y, image,
anchorY *= scale; anchorY *= scale;
x -= anchorX; x -= anchorX;
y -= anchorY; y -= anchorY;
if (snapToPixel) {
x = Math.round(x);
y = Math.round(y);
}
var w = (width + originX > image.width) ? image.width - originX : width; var w = (width + originX > image.width) ? image.width - originX : width;
var h = (height + originY > image.height) ? image.height - originY : height; var h = (height + originY > image.height) ? image.height - originY : height;
@@ -271,6 +267,12 @@ ol.render.canvas.Replay.prototype.replayImage_ = function(context, x, y, image,
} }
var canvas = context.canvas; var canvas = context.canvas;
var intersects = box[0] <= canvas.width && box[2] >= 0 && box[1] <= canvas.height && box[3] >= 0; var intersects = box[0] <= canvas.width && box[2] >= 0 && box[1] <= canvas.height && box[3] >= 0;
if (snapToPixel) {
x = Math.round(x);
y = Math.round(y);
}
if (declutterGroup) { if (declutterGroup) {
if (!intersects && declutterGroup[4] == 1) { if (!intersects && declutterGroup[4] == 1) {
return; return;
+14 -14
View File
@@ -597,11 +597,11 @@ describe('ol.rendering.layer.Vector', function() {
}); });
source.addFeature(centerFeature); source.addFeature(centerFeature);
source.addFeature(new ol.Feature({ source.addFeature(new ol.Feature({
geometry: new ol.geom.Point([center[0] - 550, center[1]]), geometry: new ol.geom.Point([center[0] - 540, center[1]]),
text: 'west' text: 'west'
})); }));
source.addFeature(new ol.Feature({ source.addFeature(new ol.Feature({
geometry: new ol.geom.Point([center[0] + 550, center[1]]), geometry: new ol.geom.Point([center[0] + 540, center[1]]),
text: 'east' text: 'east'
})); }));
@@ -638,11 +638,11 @@ describe('ol.rendering.layer.Vector', function() {
}); });
source.addFeature(centerFeature); source.addFeature(centerFeature);
source.addFeature(new ol.Feature({ source.addFeature(new ol.Feature({
geometry: new ol.geom.Point([center[0] - 550, center[1]]), geometry: new ol.geom.Point([center[0] - 540, center[1]]),
text: 'west' text: 'west'
})); }));
source.addFeature(new ol.Feature({ source.addFeature(new ol.Feature({
geometry: new ol.geom.Point([center[0] + 550, center[1]]), geometry: new ol.geom.Point([center[0] + 540, center[1]]),
text: 'east' text: 'east'
})); }));
@@ -678,12 +678,12 @@ describe('ol.rendering.layer.Vector', function() {
zIndex: 2 zIndex: 2
})); }));
source.addFeature(new ol.Feature({ source.addFeature(new ol.Feature({
geometry: new ol.geom.Point([center[0] - 550, center[1]]), geometry: new ol.geom.Point([center[0] - 540, center[1]]),
text: 'west', text: 'west',
zIndex: 3 zIndex: 3
})); }));
source.addFeature(new ol.Feature({ source.addFeature(new ol.Feature({
geometry: new ol.geom.Point([center[0] + 550, center[1]]), geometry: new ol.geom.Point([center[0] + 540, center[1]]),
text: 'east', text: 'east',
zIndex: 1 zIndex: 1
})); }));
@@ -717,10 +717,10 @@ describe('ol.rendering.layer.Vector', function() {
}); });
source.addFeature(centerFeature); source.addFeature(centerFeature);
source.addFeature(new ol.Feature({ source.addFeature(new ol.Feature({
geometry: new ol.geom.Point([center[0] - 550, center[1]]) geometry: new ol.geom.Point([center[0] - 540, center[1]])
})); }));
source.addFeature(new ol.Feature({ source.addFeature(new ol.Feature({
geometry: new ol.geom.Point([center[0] + 550, center[1]]) geometry: new ol.geom.Point([center[0] + 540, center[1]])
})); }));
layer.setDeclutter(true); layer.setDeclutter(true);
@@ -757,10 +757,10 @@ describe('ol.rendering.layer.Vector', function() {
}); });
source.addFeature(centerFeature); source.addFeature(centerFeature);
source.addFeature(new ol.Feature({ source.addFeature(new ol.Feature({
geometry: new ol.geom.Point([center[0] - 550, center[1]]) geometry: new ol.geom.Point([center[0] - 540, center[1]])
})); }));
source.addFeature(new ol.Feature({ source.addFeature(new ol.Feature({
geometry: new ol.geom.Point([center[0] + 550, center[1]]) geometry: new ol.geom.Point([center[0] + 540, center[1]])
})); }));
layer.setDeclutter(true); layer.setDeclutter(true);
@@ -796,11 +796,11 @@ describe('ol.rendering.layer.Vector', function() {
zIndex: 2 zIndex: 2
})); }));
source.addFeature(new ol.Feature({ source.addFeature(new ol.Feature({
geometry: new ol.geom.Point([center[0] - 550, center[1]]), geometry: new ol.geom.Point([center[0] - 540, center[1]]),
zIndex: 3 zIndex: 3
})); }));
source.addFeature(new ol.Feature({ source.addFeature(new ol.Feature({
geometry: new ol.geom.Point([center[0] + 550, center[1]]), geometry: new ol.geom.Point([center[0] + 540, center[1]]),
zIndex: 1 zIndex: 1
})); }));
@@ -835,11 +835,11 @@ describe('ol.rendering.layer.Vector', function() {
text: 'center' text: 'center'
})); }));
source.addFeature(new ol.Feature({ source.addFeature(new ol.Feature({
geometry: new ol.geom.Point([center[0] - 550, center[1]]), geometry: new ol.geom.Point([center[0] - 540, center[1]]),
text: 'west' text: 'west'
})); }));
source.addFeature(new ol.Feature({ source.addFeature(new ol.Feature({
geometry: new ol.geom.Point([center[0] + 550, center[1]]), geometry: new ol.geom.Point([center[0] + 540, center[1]]),
text: 'east' text: 'east'
})); }));