1、【转载】ArcGIS API for Flex学习笔【转载】ArcGIS API for Flex学习笔记2011年10月10 日重要提醒:系统检测到您的帐号可能存在被盗风险,请尽快查看风险提示,并立即修改密码。 | 关闭 网易博客安全提醒:系统检测到您当前密码的安全性较低,为了您的账号安全,建议您适时修改密码 立即修改 | 关闭 Struggle Janvy 用音乐诠释心情,用知识武装自己. ArcGIS API for Flex概述 1. 你能用它做什么? l 它使得你可以脱离arcgis sever完成一些 地图 和任务,例如: l 显示包含自己数据的一幅交互 地图 ; l 在服务器上执
2、行一个GIS模型并且显示结果; l 将你自己的数据显示到ArcGIS的在线交互底图上; l 在你自己的GIS数据上寻找特征或属性并显示出结果; l 定位并显示结果; l 编辑你的数据(若已经发布为一个特征服务); l 创建mashup(信息来自于多种网络源); 2. 它里面都包含什么? 它提供给我们以下资源来用于我们的网络应用: l 地图 api提供有全部的 地图 投影以及动态的和瓦片的脱离arcgis sever的 地图 服务; l 图形通过允许用户画图或是提供当用户点击或滑动鼠标时的弹出窗口来增强你的网络应用; l 任务api包括总的GIS任务的方法和技术。(查询、定位、查询属性、确认功能
3、、地理处理、路径及网络分析操作) l 组件用额外的组件来增加速度。(编辑器、信息窗口、属性检验、模板选择、时间滑动棒) l 获取adobe flex组件。 3. 用ArcGIS API For Flex来创建一个应用: 下载并解压arcgis api for flex zip。解压后,你可以发现arcgis api for flex库(.swc),一个例子字典,一个自我描述文件。 确定将.swc文件存储在你的工程的libs文件夹下或是设定Adobe Flash Builder的库路径,设定Adobe Flash Builder的库路径: a. 右击工程,点击“属性”;或是,在文件菜单上,“工程
4、-属性” b. 点击“Flex Build Path” c. 点击“Library Path”标签 d. 点击“Add SWC”按钮 e. 浏览到你解压的SWC文件 在你的Flex 环境 里,通过写代码来创建应用获得ArcGIS Sever资源。你也可以浏览例子来创建。例如,以下为获取瓦片 地图 的源代码: 编译代码来创建你的应用。 效果图如下: 1. Using Map 使用 地图这个教程告诉你如何创建特定位置的 地图 应用,阐明了ArcGIS API for Flex在MXML页面中是怎样使用的。 下面是样例的全部代码: 结果如下图所示: 现在来说明怎样创建一幅 地图 : (1)如果需要的
5、话,添加一个页面标题在标签里,这个名字将会出现在你的web浏览器标题栏。 (2)通过加入以下代码来添加 地图 到你的应用中: 当你第一次使用esri命名空间,Flash Builder自动添加命名空间到应用标签。当你添加,Flash Builder自动创建与之相匹配的完成标签。 (3)从ArcGIS在线中添加一个层。例如,添加以下到 地图 标签中: 街道 地图 服务,一个瓦片 地图 服务层,用ArcGISTiledMapSeviceLayer创建器来初始化。这个URL是这个服务的末端。这个末端是服务的参考,你可以通过服务目录找到。 (4)设定范围。在这个例子中,你将添加一个特定的非洲的范围。添
6、加以下到 地图 标签中。 (5)编译完成的应用,你将会看到一个定位中心为非洲的 地图 。 2. Using Query 使用查询 在这个教程中,你将学会怎样用查询工程去从ArcGIS Sever服务查询信息。你将用到Query,QueryTask,FeatureSet来在 地图 中查询图层并显示结果。这是通常的查询过程: l 创建 地图 和图形层。 l 用查询过滤器来创建查询任务。 l 通过用户输入执行查询任务,例如,在 地图 上选择特征地物,从列表中选择一个值或是键入一个值。 l 显示查询结果且返回到数据集中。数据集包含选定特征地物的几何和属性信息。几何信息将用于特征地物的高亮,属性信息用于
7、填充数据表或提示信息。 下面的例子是一个用户键入城市名查询的任务。基于这个输入,所以匹配这个名字的城市都显示在 地图 上。 创建层 这个 地图 和它的层将作为显示查询结果的上下文。图形层用于符号化和显示查询结果的几何图形。下面的代码段显示了用ArcGIS Sever瓦片 地图 服务层来显示一幅 地图 ,并且将图形层添加到 地图 上。那些通过图形层来渲染的特征地物将采用“infoSymbol1”中定义的符号,将在后面解释。 并不是总需要 地图 来显示一个查询。在通过填充数据表来显示查询结果的情况下, 地图 就不需要。 创建查询任务 QueryTask创建一个查询用到的层URL。注意这个URL包括
8、层ID。在下面的代码示例中,层ID是0。 这个查询定义了一个用于执行查询的规则。实际的过滤器通过“text“属性来设定,它绑定到我们随后看到的输入文本组件的值。这个域用于显示定义 地图 文件的域。你可以决定在服务目录中层的显示域。既然我们想显示查询的结果,我们设置“returnGeometry“为真。 在这个例子中,在输出域中包含一列的输出字段。当你设定输出域时,你应该限制期望在查询和结果中使用的字段。字段越少,返回速度越快。你应该使用实际的字段名而不是别名(别名可以用在结果中)。 CITY_NAME STATE_NAME 执行查询 在一个应用中,查询的执行是基于用户提供的输入的。在下面的例子
9、中,创建的面板有一个输入文本框来输入查询的城市名,一个按钮来执行查询。点击鼠标的事件叫做doQuery()方法,第一个参数是我们定义的查询规则,第二个参数是异步反应器。这个反应器设定回叫函数onResult()和onFault()来显示查询成功还是失败。 private function doQuery():void queryTask.execute(query, new AsyncResponder(onResult, onFault); 显示查询结果 显示查询结果包括在图上添加符号以及在图形层上添加图形。符号可以直接应用到图形层上,并且所有添加到图形层上的图形都将继承个这个符号。 你应该
10、记得当我们添加图形层时设置符号为“infoSymbol1”。以下的代码显示出“infoSymbol1”是一种InfoSymbol符号类型。InfoSymbol有一个infoRenderer来定义信息是如何渲染的。在下面的例子中,“data.CITY_NAME”和“data.STATE_NAME”是我们在查询中预先设置的外域。 如果你所用的组件像是infoRenderer在其继承链上有个父组件,用于补充IDataRenderer,因而所有图形属性通过数据属性都是可用的。例子中,下面的组件“VBox”有一个父“容器”用于补充IDataRenderer。 成功执行查询后回调函数onResult()将
11、被调用。这个函数的其中一个参数是一个数据集对象,包括查询的结果。要素集中的要素可以直接分配到图形层中的图形提供者中被渲染。 如果失败了,onfault()函数将被调用,下面的例子就显示了有关失败的警示框。 private function doQuery():void queryTask.execute(query, new AsyncResponder(onResult, onFault); function onResult(featureSet:FeatureSet, token:Object = null ):void myGraphicsLayer.graphicProvider = featureSet.features; function onFault(info:Object, token:Object = null):void Alert.show( info.toString() ); 下面是这节中讨论的方案的完整代码: CITY_NAME STATE_NAME 实验结果如下: 转自:http:/ ml 特别声明: 1:资料来源于互联网,版权归属原作者 2:资料内容属于网络意见,与本账号立场无关 3:如有侵权,请告知,立即删除。