MCPcopy Create free account
hub / github.com/SuperMap/iClient-JavaScript / calculateXShapeInfo

Method calculateXShapeInfo

src/common/overlay/Bar3D.js:351–395  ·  view source on GitHub ↗

* @function FeatureThemeBar3D.prototype.calculateXShapeInfo * @description 计算 X 轴方向上的图形信息,此信息是一个对象,包含两个属性, * 属性 xPositions 是一个一维数组,该数组元素表示图形在 x 轴方向上的像素坐标值, * 如果图形在 x 方向上有一定宽度,通常取图形在 x 方向上的中心点为图形在 x 方向上的坐标值。 * width 表示图形的宽度(特别注意:点的宽度始终为 0,而不是

()

Source from the content-addressed store, hash-verified

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}

Callers 1

assembleShapesMethod · 0.95

Calls 1

pushMethod · 0.80

Tested by

no test coverage detected