MCPcopy Index your code
hub / github.com/SuperMap/iClient-JavaScript / getLabelInfo

Method getLabelInfo

src/openlayers/overlay/Label.js:631–723  ·  view source on GitHub ↗

* @function Label.prototype.getLabelInfo * @description 根据当前位置获取绘制后的标签信息,包括标签的宽,高和行数等。 * @returns {Object} 绘制后的标签信息。

(location, style)

Source from the content-addressed store, hash-verified

629 * @returns {Object} 绘制后的标签信息。
630 */
631 getLabelInfo(location, style) {
632 var LABEL_ALIGN = {
633 "l": "left",
634 "r": "right",
635 "t": "top",
636 "b": "bottom"
637 },
638 LABEL_FACTOR = {
639 "l": 0,
640 "r": -1,
641 "t": 0,
642 "b": -1
643 };
644
645 style = CommonUtil.extend({
646 fontColor: "#000000",
647 labelAlign: "cm"
648 }, style);
649 var pt = this.getLocalXY(location);
650 var labelWidth = 0;
651
652 if (style.labelXOffset || style.labelYOffset) {
653 var xOffset = isNaN(style.labelXOffset) ? 0 : style.labelXOffset;
654 var yOffset = isNaN(style.labelYOffset) ? 0 : style.labelYOffset;
655 pt[0] += xOffset;
656 pt[1] -= yOffset;
657 }
658
659 var canvas = document.createElement('canvas');
660 canvas.globalAlpha = 0;
661 canvas.lineWidth = 1;
662
663 var ctx = canvas.getContext("2d");
664
665 ctx.fillStyle = style.fontColor;
666 ctx.globalAlpha = style.fontOpacity || 1.0;
667 var fontStyle = [style.fontStyle ? style.fontStyle : "normal",
668 "normal",
669 style.fontWeight ? style.fontWeight : "normal",
670 style.fontSize ? style.fontSize : "1em",
671 style.fontFamily ? style.fontFamily : "sans-serif"
672 ].join(" ");
673 var labelRows = style.label.split('\n');
674 var numRows = labelRows.length;
675 var vfactor, lineHeight, labelWidthTmp;
676 if (ctx.fillText) {
677 // HTML5
678 ctx.font = fontStyle;
679 ctx.textAlign = LABEL_ALIGN[style.labelAlign[0]] ||
680 "center";
681 ctx.textBaseline = LABEL_ALIGN[style.labelAlign[1]] ||
682 "middle";
683 vfactor = LABEL_FACTOR[style.labelAlign[1]];
684 if (vfactor == null) {
685 vfactor = -.5;
686 }
687 lineHeight = ctx.measureText('Mg').height ||
688 ctx.measureText('xx').width;

Callers 5

calculateLabelBoundsMethod · 0.95
LabelSpec.jsFile · 0.45
LabelThemeLayer.jsFile · 0.45

Calls 4

extendMethod · 0.80
createElementMethod · 0.80
getLocalXYMethod · 0.45
getContextMethod · 0.45

Tested by

no test coverage detected