From d3d6ddc2ca4a1d8be33dcb453416025f1999e389 Mon Sep 17 00:00:00 2001 From: simaQ Date: Tue, 8 May 2018 11:50:55 +0800 Subject: [PATCH] fix: getSnapRecords() - pick data more accurate in pie chart. --- src/geom/base.js | 17 ++++++++++------- test/bug/issue-67-spec.js | 7 ++++--- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/geom/base.js b/src/geom/base.js index f6803012e..df72507e8 100644 --- a/src/geom/base.js +++ b/src/geom/base.js @@ -675,13 +675,16 @@ class Geom extends Base { // 特别针对饼图做处理 if (this.hasAdjust('stack') && coord.isPolar && coord.transposed && xScale.values.length === 1) { - let yValue = yScale.invert(invertPoint.y); - yValue = self._getSnap(yScale, yValue, tmp); - tmp.forEach(function(obj) { - if (Util.isArray(yValue) ? obj[FIELD_ORIGIN_Y].toString() === yValue.toString() : obj[FIELD_ORIGIN_Y] === yValue) { - rst.push(obj); - } - }); + if (invertPointX >= 0 && invertPointX <= 1) { // 精确拾取 + let yValue = yScale.invert(invertPoint.y); + yValue = self._getSnap(yScale, yValue, tmp); + tmp.forEach(obj => { + if (Util.isArray(yValue) ? obj[FIELD_ORIGIN_Y].toString() === yValue.toString() : obj[FIELD_ORIGIN_Y] === yValue) { + rst.push(obj); + } + }); + } + } else { rst = tmp; } diff --git a/test/bug/issue-67-spec.js b/test/bug/issue-67-spec.js index 8b9b5cce5..787287e65 100644 --- a/test/bug/issue-67-spec.js +++ b/test/bug/issue-67-spec.js @@ -57,13 +57,14 @@ describe('getSnapRecords', () => { let records; canvas.onclick = ev => { - const point = chart.get('canvas').getPointByClient(ev.clientX, ev.clientY); + const point = F2.Util.getRelativePosition({ x: ev.clientX, y: ev.clientY }, chart.get('canvas')); records = chart.getSnapRecords(point); + console.log(records); }; gestureSimulator(canvas, 'click', { - clientX: 231, - clientY: 61 + clientX: 218, + clientY: 52 }); setTimeout(function() {