* @function FeatureThemeBar3D.prototype.calculateXShapeInfo * @description 计算 X 轴方向上的图形信息,此信息是一个对象,包含两个属性, * 属性 xPositions 是一个一维数组,该数组元素表示图形在 x 轴方向上的像素坐标值, * 如果图形在 x 方向上有一定宽度,通常取图形在 x 方向上的中心点为图形在 x 方向上的坐标值。 * width 表示图形的宽度(特别注意:点的宽度始终为 0,而不是
()
| 349 | * width - {number} 表示图形的宽度(特别注意:点的宽度始终为 0,而不是其直径)。 |
| 350 | */ |
| 351 | calculateXShapeInfo() { |
| 352 | var dvb = this.dataViewBox; // 数据视图框 |
| 353 | var sets = this.setting; // 图表配置对象 |
| 354 | var fvc = this.dataValues.length; // 数组值个数 |
| 355 | |
| 356 | if (fvc < 1) { |
| 357 | return null; |
| 358 | } |
| 359 | |
| 360 | var xBlank; // x 轴空白间隔参数 |
| 361 | var xShapePositions = []; // x 轴上图形的位置 |
| 362 | var xShapeWidth = 0; // x 轴上图形宽度(自适应) |
| 363 | var dvbWidth = this.DVBWidth; // 数据视图框宽度 |
| 364 | |
| 365 | // x 轴空白间隔参数处理 |
| 366 | if (sets.xShapeBlank && sets.xShapeBlank.length && sets.xShapeBlank.length == 3) { |
| 367 | xBlank = sets.xShapeBlank; |
| 368 | var xsLen = dvbWidth - (xBlank[0] + xBlank[2] + (fvc - 1) * xBlank[1]) |
| 369 | if (xsLen <= fvc) { |
| 370 | return null; |
| 371 | } |
| 372 | xShapeWidth = xsLen / fvc |
| 373 | } else { |
| 374 | // 默认使用等距离空白间隔,空白间隔为图形宽度 |
| 375 | xShapeWidth = dvbWidth / (2 * fvc + 1); |
| 376 | xBlank = [xShapeWidth, xShapeWidth, xShapeWidth]; |
| 377 | } |
| 378 | |
| 379 | // 图形 x 轴上的位置计算 |
| 380 | var xOffset = 0 |
| 381 | for (var i = 0; i < fvc; i++) { |
| 382 | if (i == 0) { |
| 383 | xOffset = xBlank[0] + xShapeWidth / 2; |
| 384 | } else { |
| 385 | xOffset += (xShapeWidth + xBlank[1]); |
| 386 | } |
| 387 | |
| 388 | xShapePositions.push(dvb[0] + xOffset); |
| 389 | } |
| 390 | |
| 391 | return { |
| 392 | "xPositions": xShapePositions, |
| 393 | "width": xShapeWidth |
| 394 | }; |
| 395 | } |
| 396 | } |