首页 > 代码库 > arcgis for flex 学习笔记(一)

arcgis for flex 学习笔记(一)

初步认识

  地图由图层、要素、样式等组成。地图上有N个图层,图层上有N个要素,每个要素可以存放点、线、面等,每个要素可以设置样式,如果显示图片、或文字均可以先创建一个mxml组件,然后设置到要素上。

  面和线都是由点组成的。

添加点

  1.首先初始化图层,GraphicsLayer。

  2.获取坐标点,MapPoint。

  3.创建要素,Graphic。

  4.设置样式 Symbol。

  5.添加要素至Layer,即是第一步创建的图层。

添加线

  在添加点的基础上多了一个步骤。

  获取到多个点,可以实例化一个线对象,将线添加到点中。

                //构造线对象                var pline:Polyline=new Polyline();                //添加点数据到线                pline.addPath(xydata);

  其他步骤相同,xydata是一个MapPoint数组。

添加面

  跟添加线的逻辑一样,面也是由n个点组成。核心代码如下:

                var area:Polygon=new Polygon();                area.addRing(xydataArea);

图层

  图层按照先后添加顺序,好比html的zindex属性。最先添加的属性在下方。如果说,同时添加一个面和线,而线要做点击事件,那么线所处的图层应该在面之上。

高亮闪烁

  创建一个symbolToggleEffect对象,设置其样式,在MouseOver事件中,开始动画,MouseOut事件中结束动画。

        private static var symbolToggleEffect:SimpleFiltersToggleEffect; //高亮对象        private static var filterMarker:GlowFilter=null; //高亮样式        private static var simfilterArray:Array=[]; //过滤对象数组        public static function DrawVehAreaOver(evt:MouseEvent):void        {            if (symbolToggleEffect)                symbolToggleEffect.end();            var targetGarphic:Graphic=evt.currentTarget as Graphic;            //获取图层            var layer:GraphicsLayer=GetAreaLayer();            //找到缓冲区图层,存在则隐藏            var currArea:Graphic=FindGraphicByAttr(layer, "AREAID", targetGarphic.attributes.USERID);            if (currArea)            {                currArea.visible=true;                //开始高亮                if (!symbolToggleEffect)                {                    if (!filterMarker)                    {                        InitSyle();                    }                    symbolToggleEffect=new SimpleFiltersToggleEffect(currArea, null, simfilterArray, 500);                }                symbolToggleEffect.play();            }        }        //昂是初始化        private static function InitSyle():void        {            //高亮样式            if (!filterMarker)            {                var objselectedHouse:Object=RGlobal.MapUrlArrayList["FeatureStyles"].SelectHouse;                filterMarker=new GlowFilter();                filterMarker.color=objselectedHouse.fillcolor;                filterMarker.blurX=20;                filterMarker.blurY=20;                filterMarker.alpha=objselectedHouse.fillopacity;                filterMarker.strength=2;                simfilterArray.push(filterMarker);            }        }        /*线路要素 移出        */        public static function DrawVehAreaOut(evt:MouseEvent):void        {            if (symbolToggleEffect)                symbolToggleEffect.end();            var targetGarphic:Graphic=evt.currentTarget as Graphic;            //获取图层            var layer:GraphicsLayer=GetAreaLayer();            //找到缓冲区图层,存在则隐藏            var currArea:Graphic=FindGraphicByAttr(layer, "AREAID", targetGarphic.attributes.USERID);            if (currArea)            {                currArea.visible=false;            }        }