zoukankan      html  css  js  c++  java
  • 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;
                }
            }
  • 相关阅读:
    c# base knowledge
    Asp.net life cycle introduction
    Build a excel which contains downlist.
    using Assembly to create object
    Build a endtoend log to record system performance.
    转帖 饱含人生哲理的真情嘱咐
    Using nunit in website and class project.
    updatepanel summary
    我的项目 系统性能优化
    service数据改变时发广播给前端activity供显示
  • 原文地址:https://www.cnblogs.com/codealone/p/3812677.html
Copyright © 2011-2022 走看看