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;
            }
        }
原文地址:https://www.cnblogs.com/codealone/p/3812677.html