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;
            }
        }

arcgis for flex 学习笔记(一),布布扣,bubuko.com

时间: 2024-10-02 23:03:45

arcgis for flex 学习笔记(一)的相关文章

ArcGIS For Flex学习之Mapping---Switching Basemaps

今天开始系统的学习ArcGIS For Flex,先从ESRI的例子学起 1 <?xml version="1.0" encoding="utf-8"?> 2 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 3 xmlns:s="library://ns.adobe.com/flex/spark" 4 xmlns:esri="http:

ArcGIS For Flex学习之Layers---控制图层的显示与否(利用DataGrid)

这个例子演示的是通过右侧DataGrid中的复选框来控制相应图层的可见性,由于ArcGISDynamicMapServiceLayer的defaultVisibility属性在地图发布时均为可见(true),所以开始时复选框均为选中状态,注意一下几点:(1)DataGrid的数据源为图层的LayerInfos(其中包括defaultVisibility.layerId.name等,可以用作某些控件的dataField属性):(2)复选框的select以及click属性:(3)复选框在选中状态时,

CSS3伸缩布局Flex学习笔记

如果需要使用伸缩布局首先得把display:flex;对于兼容还得加前缀display:-webkit-display:flex;等其他浏览器前缀,但我本机Chrome测试已经不需要加前缀了,其实这些还好,关键移动端竟然不支持这个属性,移动端支持的还是老版本的display:-webki-box;不过对于学习来说,也不管它支持不支持了,学了再说吧,更何况Chrome已经把flex的前缀去了,说明flex多少还是有些稳定的. 下面列出了关于CSS与flex一起使用的一些属性 display 显示方

ArcGIS For Flex学习之Mapping---Select and zoom

Tips:这个例子说明如何在图层中选择或反选几何对象,当点击地图时,触发mapClick事件,激活QueryTask,这里的Query中的query.geometry = event.mapPoint;利用鼠标点击的点来查找包括该选择点的Polygon,然后将查询到的几何要素添加到GraphicsLayer中并放大一个级别:同时,再次点击选择的要素时,触发unselectGraphic事件,并从GraphicsLayer中移除该要素.具体效果图及代码如下: 1 <?xml version="

Java与Flex学习笔记(20)---将flex页面嵌入到jsp页面中

如果我们只需要用到Flex的一部分功能,例如播放器功能,我们可以单独把Flex页面嵌入到Jsp页面中.要想实现此功能,需要下载一个工程,将其覆盖在服务器根目录下即可.你可以在次下载:FlexModule_j2ee.zip. 在eclipse下新建一个web工程,将刚才下载的工程解压缩,然后将webtier文件夹下的内容覆盖服务器根目录下,如本人的: 注意要将lib文件夹和jars文件夹下的jar包添加到到类路径下,这样就算是整合完成了吧. 接着新建一个flex的mxml文件PlayVideo.m

flex 学习笔记

flex-basis的优先级大于 宽度或高度的值. <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"> <title>flex</title> <style type="text/css"> * { margin: 0; padding: 0; } .container { display:

ArcGIS AddIN Sample学习笔记

1.AddInEditorExtension 功能描述:编辑器扩展,实现在编辑要素,对编辑事件的监听,及对新创建的要素的处理 核心代码: void Events_OnStartEditing() { //Since features of shapefiles, coverages etc cannot be validated, ignore wiring events for them if (ArcMap.Editor.EditWorkspace.Type != esriWorkspace

ArcGIS API for JavaScript 4.2学习笔记[1] 显示地图

ArcGIS API for JavaScript 4.2直接从官网的Sample中学习,API Reference也是从官网翻译理解过来,鉴于网上截稿前还没有人发布过4.2的学习笔记,我就试试吧. 什么是ArcGIS API for JS?这里就不多介绍了,最关键的一点是4.x版本与3.x版本的变化,按官方的意思是重新写了底层. 笔记中规定: ArcGIS API for JavaScript简称AJS 使用CDN(即不配置本地环境)进行测试开发 其余根据需要进行修改.增删. 要将地图显示在h

ArcGIS JS 学习笔记1 用ArcGIS JS 实现仿百度地图的距离量测和面积量测

一.开篇 在博客注册了三年,今天才决定写第一篇博客,警告自己不要懒!!! 二.关于ArcGIS JS 版本选择 在写这篇博客时ArcGIS JS 4.0正式版已经发布.它和3.x版本的不同是,Map不在是一个控件,而真的只是一张“图”,Map(4.0版本)需要在一个View里面来展示,在MapView里面就是一张平面图,在SceneView里面就一张三维地图.同一张地图在不同的View里面就可以呈现出不同的效果.但是4.0版本才是一个最初的版本,还有很多3.x有的功能没有被加入到其中.所以我打算