arcgis api for flex 设置 TextSymbol 竖排字 道路标注
发布时间:2020-12-15 04:52:03 所属栏目:百科 来源:网络整理
导读:一个项目的要求,道路上的标注要求顺着路的方向。为了满足这个要求,构建一个标注graphic,可用TextSymbol中的angle来设置文本的旋转,但是对于南北向的道路,要求文字竖排来显示,经过了不知道多长时间的纠结,最后我放弃了,好像没有这么一个属性能直接拿
一个项目的要求,道路上的标注要求顺着路的方向。为了满足这个要求,构建一个标注graphic,可用TextSymbol中的angle来设置文本的旋转,但是对于南北向的道路,要求文字竖排来显示,经过了不知道多长时间的纠结,最后我放弃了,好像没有这么一个属性能直接拿来用,于是我参考了一篇天地会的文章 http://bbs.9ria.com/forum.php?mod=viewthread&tid=40462,14楼的同志提供了一个思路和算法,于是我自己写了下面一个类扩展了TextSymbol package AS { import com.esri.ags.symbols.TextSymbol; import flash.text.TextFormat; public class myTextSymbol extends TextSymbol { private var formerText:String; public function myTextSymbol(Vertical:Boolean=false,text:String=null,htmlText:String=null,color:uint=0,alpha:Number=1,border:Boolean=false,borderColor:uint=0,background:Boolean=false,backgroundColor:uint=16777215,placement:String="middle",angle:Number=0,xoffset:Number=0,yoffset:Number=0,textFormat:TextFormat=null,textAttribute:String=null,textFunction:Function=null) { //TODO: implement function super(text,htmlText,color,alpha,border,borderColor,background,backgroundColor,placement,angle,xoffset,yoffset,textFormat,textAttribute,textFunction); if(Vertical) { formerText = text; init(); } } private function init():void { var tempText:String = ""; for (var i:int = 0; i < formerText.length; i++) { tempText += formerText.charAt(i) + "n"; } this.text = tempText; } } }
/** *添加道路标签 * @param name 标签名称 * @param angle 旋转角度 * @param x X坐标 * @param y Y坐标 * */ private function add_road_label(name:String,angle:int,x:Number,y:Number,Vertical:Boolean):void { var mygeometry:Geometry=new MapPoint(x,y); var textSymbol:myTextSymbol=new myTextSymbol(Vertical,name,null,0x000000,1,false,0xffffff,0xFF9900,"middle",new TextFormat("微软雅黑",12)); //构建标签 var grahic2:Graphic=new Graphic(mygeometry,textSymbol); //添加标签 myGraphicsLayer.add(grahic2); } /** *添加所有道路标签 * */ private function add_all_road_lable():void { add_road_label("长 江 西 路",-30,215174,89640,false); add_road_label("江 山 南 路",-35,214831,88891,true); add_road_label("滨 海 大 道",-36,215799,88878,false); add_road_label("太 行 山 路",216129,89724,true); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |