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

Method getLabelInfo

src/mapboxgl/overlay/LabelThemeLayer.js:652–744  ·  view source on GitHub ↗

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

(location, style)

Source from the content-addressed store, hash-verified

650 * @returns {Object} 绘制后的标签信息。
651 */
652 getLabelInfo(location, style) {
653 var LABEL_ALIGN = {
654 "l": "left",
655 "r": "right",
656 "t": "top",
657 "b": "bottom"
658 },
659 LABEL_FACTOR = {
660 "l": 0,
661 "r": -1,
662 "t": 0,
663 "b": -1
664 };
665
666 style = Util.extend({
667 fontColor: "#000000",
668 labelAlign: "cm"
669 }, style);
670 var pt = this.getLocalXY(location);
671 var labelWidth = 0;
672
673 if (style.labelXOffset || style.labelYOffset) {
674 var xOffset = isNaN(style.labelXOffset) ? 0 : style.labelXOffset;
675 var yOffset = isNaN(style.labelYOffset) ? 0 : style.labelYOffset;
676 pt[0] += xOffset;
677 pt[1] -= yOffset;
678 }
679
680 var canvas = document.createElement('canvas');
681 canvas.globalAlpha = 0;
682 canvas.lineWidth = 1;
683
684 var ctx = canvas.getContext("2d");
685
686 ctx.fillStyle = style.fontColor;
687 ctx.globalAlpha = style.fontOpacity || 1.0;
688 var fontStyle = [style.fontStyle ? style.fontStyle : "normal",
689 "normal",
690 style.fontWeight ? style.fontWeight : "normal",
691 style.fontSize ? style.fontSize : "1em",
692 style.fontFamily ? style.fontFamily : "sans-serif"
693 ].join(" ");
694 var labelRows = style.label.split('\n');
695 var numRows = labelRows.length;
696 var vfactor, lineHeight, labelWidthTmp;
697 if (ctx.fillText) {
698 // HTML5
699 ctx.font = fontStyle;
700 ctx.textAlign = LABEL_ALIGN[style.labelAlign[0]] ||
701 "center";
702 ctx.textBaseline = LABEL_ALIGN[style.labelAlign[1]] ||
703 "middle";
704 vfactor = LABEL_FACTOR[style.labelAlign[1]];
705 if (vfactor == null) {
706 vfactor = -.5;
707 }
708 lineHeight = ctx.measureText('Mg').height ||
709 ctx.measureText('xx').width;

Callers 1

calculateLabelBoundsMethod · 0.95

Calls 4

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

Tested by

no test coverage detected