ArcGIS Api For Flex 动态画点和线 上一篇 / 下一篇 2011-10-12 16:04:01 / 个人分类:软件技术 查看( 1109 ) / 评论( 0 ) / 评分( 0 / 0 ) 在项目当中往往会用到在地图上跟踪GPS目标,这就需要在地图上动态画GPS点和行动轨迹,下面来看看在Flex 中是如何做到的: 代码如下: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:supportClasses="com.esri.ags.skins.supportClasses.*" minWidth="955" minHeight="600" xmlns:esri="http://www.esri.com/2008/ags" initialize="init()" > <fx:Script> <![CDATA[ import com.esri.ags.Graphic; import com.esri.ags.SpatialReference; import com.esri.ags.geometry.MapPoint; import com.esri.ags.geometry.Polyline; import com.esri.ags.layers.GraphicsLayer; import com.esri.ags.symbols.SimpleLineSymbol; import com.esri.ags.symbols.SimpleMarkerSymbol; import mx.controls.Alert; private var arr:Array= [new MapPoint(123.361328,41.265625,new SpatialReference(5326)), new MapPoint(123.720703,41.703125,new SpatialReference(5326)), new MapPoint(123.431641,41.320313,new SpatialReference(5326)), new MapPoint(123.646484,41.515625,new SpatialReference(5326)), new MapPoint(123.763272,41.734675,new SpatialReference(5326)), new MapPoint(123.248047,41.710938,new SpatialReference(5326)), new MapPoint(124.248047,42.510938,new SpatialReference(5326)), new MapPoint(123.748047,43.210938,new SpatialReference(5326)), new MapPoint(123.748047,43.210938,new SpatialReference(5326)) ]; private var polyine:Polyline=new Polyline(); private var graphicsLayer:GraphicsLayer=new GraphicsLayer(); private var grahpic:Graphic=new Graphic(); private function init():void { graphicsLayer.add(grahpic); Map.addLayer(graphicsLayer); } private function PlayPoint(e:MouseEvent):void { graphicsLayer.clear(); var i:int=0; var timer:Timer = new Timer(1000, arr.length-1); timer.addEventListener(TimerEvent.TIMER, TimerMethod); timer.start(); function TimerMethod(event:TimerEvent):void { var mps:Array=new Array; var mpStat:MapPoint=arr[i] as MapPoint; grahpic=new Graphic(mpStat,sps); graphicsLayer.add(grahpic); i=i+1; } } private function PlayLine(e:MouseEvent):void { polyine=new Polyline(); var i:int=0; var timer:Timer = new Timer(1000, arr.length-1); timer.addEventListener(TimerEvent.TIMER, TimerMethod); timer.start(); function TimerMethod(event:TimerEvent):void { var mps:Array=new Array; var mpStat:MapPoint=arr[i] as MapPoint; var mpEnd:MapPoint=arr[i+1] as MapPoint; mps.push(mpStat); mps.push(mpEnd); polyine.addPath(mps); grahpic=new Graphic(polyine,sls); graphicsLayer.add(grahpic); i=i+1; } } ]]> </fx:Script> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> <esri:SimpleLineSymbol id="sls" width="3" color="0x00FF00"/> <esri:SimpleMarkerSymbol id="sms" color="0x00FF00" size="12" style="square"/> <esri:PictureMarkerSymbol id="sps" source="http://localhost/Red_glow.swf" width="20" height="20" /> </fx:Declarations> <esri:Map id="Map" > <esri:ArcGISDynamicMapServiceLayer url="xxx "/> </esri:Map> <mx:ControlBar width="100%" top="0" left="0" paddingTop="0" paddingBottom="0" horizontalAlign="left" > <mx:Button label="开始点轨迹" width="100" fontSize="12" click="PlayPoint(event)"/> <mx:Button label="开始线轨迹" width="100" fontSize="12" click="PlayLine(event)"/> </mx:ControlBar> </s:Application>
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。