arcgis for js 文字标注 换行问题

新建 MultiLineTextSymbol.js     将下面代码拷贝进去    再页面中引入   MultiLineTextSymbol.js 

字符创中添加“\n” 换行

 

//实现 TextSymbol

require(["esri/layers/LabelLayer"], function(ll) {

if (typeof esri.layers.LabelLayer.prototype._addLabel == 'function') {

esri.layers.LabelLayer.prototype._addLabel2 = esri.layers.LabelLayer.prototype._addLabel;

esri.layers.LabelLayer.prototype._addLabel = function(a, b, c, e, g, k, m) {

// replace \n by <br>

a = a.replace(/\n/g, "<br />");

this._addLabel2(a, b, c, e, g, k, m);

}

}

});

 

require(["esri/symbols/TextSymbol", "dojox/gfx/svg"], function(ts, svg) {

if (typeof dojox.gfx.svg.Text.prototype.setShape == 'function') {

dojox.gfx.svg.Text.prototype.setShape = function(p) {

this.shape = dojox.gfx.makeParameters(this.shape, p);

this.bbox = null;

var r = this.rawNode,

s = this.shape;

r.setAttribute("x", s.x);

r.setAttribute("y", s.y);

r.setAttribute("text-anchor", "start");

r.setAttribute("text-decoration", s.decoration);

r.setAttribute("rotate", s.rotated ? 90 : 0);

r.setAttribute("kerning", s.kerning ? "auto" : 0);

r.setAttribute("text-rendering", "optimizeLegibility");

 

while (r.firstChild)

r.removeChild(r.firstChild);

 

if (s.text) {

var texts = s.text.replace(/<br\s*\/?>/ig, "\n").split("\n");

var lineHeight = 1.1 * parseInt(document.defaultView.getComputedStyle(r, "").getPropertyValue("font-size"), 10);

if (isNaN(lineHeight) || !isFinite(lineHeight))

lineHeight = 15;

 

for (var i = 0, n = texts.length; i < n; i++) {

var tspan = (document.createElementNS ? document.createElementNS(dojox.gfx.svg.xmlns.svg, "tspan") : document.createElement("tspan"));

tspan.setAttribute("dy", i ? lineHeight : -(texts.length - 1) * lineHeight / 2);

tspan.setAttribute("x", s.x);

tspan.appendChild((dojox.gfx.useSvgWeb ? document.createTextNode(texts[i], true) : document.createTextNode(texts[i])));

r.appendChild(tspan);

}

}

 

return this;

}

}

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值