Skip to content

Commit

Permalink
map 输出数据精度默认跟输入数据精度相同。 Fix #1670, #1713
Browse files Browse the repository at this point in the history
  • Loading branch information
pissang committed Jun 24, 2015
1 parent 1b67ca3 commit 185d00d
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 14 deletions.
25 changes: 16 additions & 9 deletions src/chart/map.js
Expand Up @@ -34,7 +34,7 @@ define(function (require) {
//},
// mapValueCalculation: 'sum', // 数值合并方式,默认加和,可选为:
// 'sum' | 'average' | 'max' | 'min'
mapValuePrecision: 0, // 地图数值计算结果小数精度
// mapValuePrecision: 0, // 地图数值计算结果小数精度
showLegendSymbol: true, // 显示图例颜色标识(系列标识的小圆点),存在legend时生效
// selectedMode: false, // 选择模式,默认关闭,可选single,multiple
dataRangeHoverLink: true,
Expand Down Expand Up @@ -233,7 +233,8 @@ define(function (require) {
valueData[mapType][name] = valueData[mapType][name]
|| {
seriesIndex : [],
valueMap: {}
valueMap: {},
precision: 0
};
for (var key in data[j]) {
if (key != 'value') {
Expand All @@ -245,6 +246,12 @@ define(function (require) {
valueData[mapType][name].value == null
&& (valueData[mapType][name].value = 0);

valueData[mapType][name].precision =
Math.max(
this.getPrecision(+data[j].value),
valueData[mapType][name].precision
);

valueData[mapType][name].value += (+data[j].value);
valueData[mapType][name].valueMap[i] = +data[j].value;
}
Expand All @@ -268,14 +275,14 @@ define(function (require) {
this.lastShapeList = [];
}
for (var mt in valueData) {
if (valueCalculation[mt] && valueCalculation[mt] == 'average') {
for (var k in valueData[mt]) {
valueData[mt][k].value =
(valueData[mt][k].value / valueData[mt][k].seriesIndex.length)
.toFixed(
mapValuePrecision[mt]
) - 0;
for (var k in valueData[mt]) {
if (valueCalculation[mt] == 'average') {
valueData[mt][k].value /= valueData[mt][k].seriesIndex.length;
}
valueData[mt][k].value = valueData[mt][k].value.toFixed(
mapValuePrecision[mt] == null
? valueData[mt][k].precision : mapValuePrecision[mt]
) - 0;
}

this._mapDataMap[mt] = this._mapDataMap[mt] || {};
Expand Down
4 changes: 3 additions & 1 deletion src/component/base.js
Expand Up @@ -236,7 +236,9 @@ define(function (require) {
parsePercent: number.parsePercent,
parseCenter: number.parseCenter,
parseRadius: number.parseRadius,
numAddCommas: number.addCommas
numAddCommas: number.addCommas,

getPrecision: number.getPrecision
};

return Base;
Expand Down
28 changes: 24 additions & 4 deletions src/util/number.js
Expand Up @@ -61,11 +61,31 @@ define(function() {
return x[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,'$1,')
+ (x.length > 1 ? ('.' + x[1]) : '');
}

/**
* 获取数字的小数位数
* @param {number} val
*/

// It is much faster than methods converting number to string as follows
// var tmp = val.toString();
// return tmp.length - 1 - tmp.indexOf('.');
// especially when precision is low
function getPrecision(val) {
var e = 1;
var count = 0;
while (((val * e) | 0) / e !== val) {
e *= 10;
count++;
}
return count;
}

return {
parsePercent : parsePercent,
parseCenter : parseCenter,
parseRadius : parseRadius,
addCommas : addCommas
parsePercent: parsePercent,
parseCenter: parseCenter,
parseRadius: parseRadius,
addCommas: addCommas,
getPrecision: getPrecision
};
});

0 comments on commit 185d00d

Please sign in to comment.