第6章  ArcGIS for Flex
6.1  ArcGIS API for Flex介绍
flex软件
6.1.1  简介
ArcGIS API for Flex是Esri推出的WebGIS客户端开发包,用于富互联网应用程序RIA(Rich Internet Applications)的开发,为ArcGIS Server提供了一套全新的开发方式,其优点是运行速度快,为用户提供优秀的用户体验。
使用ArcGIS API for Flex可以实现下列功能:
z显示地图数据并与之交互。
z在服务器上执行空间处理模型并显示结果。
z基于ArcGIS Online的地图服务,显示自己的业务数据。
z根据属性或者位置查数据并显示结果。
z查地址并显示结果。
z创新结果的显示方式。
z创建Mushups应用。
6.1.2  环境搭建
ArcGIS API for Flex的下载地址为:
h ttp://resources.Esri/ArcGISserver/apis/flex/index.cfm?fa=home
开发ArcGIS API for Flex程序需要Flex环境的支持。
Flex SDK 3的下载地址为:
opensource.adobe/wiki/display/flexsdk/download?build=
3.0.1.2012&pkgtype=1
有了Flex SDK 3和ArcGIS API for Flex,就可以开发RIA的Flex程序了。
为了开发方便,最好使用Flex Builder,可以从Adobe的下载试用版,下载地址为:
h ttp://download.macromedia/pub/flex/flex_builder/
安装好Flex Builder之后,会安装Flex SDK 3,所以就不用自己手工安装了。
6.1.3  第一个ArcGIS API for Flex程序
打开Flex Builder,从菜单栏选择“开始”→“新建”→“Flex项目”,创建一个Flex 工程(名称为“Demo”),如图6-1所示,单击“完成”按钮则完成工程创建。
图6-1  用Flex Builder新建Flex项目
右击工程名,从弹出的快捷菜单中选择“属性”命令,在弹出的属性对话框中选择“Flex 构建路径”,接着选择“库路径”选项卡,单击“添加SWC”按钮,把下载的ArcGIS API for Flex(相对路径为解压文件夹下\ArcGIS_Flex\libs中的swc文件)添加进去,如图6-2所示。
图6-2  Flex构建路径
在l文件中进行API开发的代码编写,具体代码如下:
第6章  ArcGIS for Flex
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="ns.adobe/mxml/2009"
xmlns:s="library://ns.adobe/flex/spark"
xmlns:mx="library://ns.adobe/flex/mx"
minWidth="955" minHeight="600"
xmlns:Esri="www.Esri/2008/ags"
pageTitle="专题图应用">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<Esri:Map id="myMap">
<!-- 设置地图范围 -->
<Esri:extent>
<Esri:Extent id="thematicExtent" xmin="8182244.7307"
ymin="427472.702799998" xmax="15038781.1928" ymax="7087941.283">
<Esri:SpatialReference id="mapSR" wkid="102100"/>
</Esri:Extent>
</Esri:extent>
<!--添加基础地图服务和专题图服务 alpha属性设置图层透明度-->
<Esri:layers>
<Esri:ArcGISTiledMapServiceLayer id="onLineChinaMapServiceLayer"
url="cache1.ArcGISonline/ArcGIS/rest/services/
ChinaOnlineStreetGray/MapServer"/>
<Esri:ArcGISTiledMapServiceLayer id="thematicMapServiceLayer"
url="cache1.ArcGISonline/ArcGIS/rest/services/
Thematic_Pop_Eco/China_Population/MapServer" alpha="0.5"/>
</Esri:layers>
</Esri:Map>
</s:Application>
下面的代码中,xmlns:mx和xmlns:Esri获取URL资源:
xmlns:mx = "www.adobe/2006/mxml"
x mlns:Esri = "www.Esri/2008/ags"
使用ArcGIS API for Flex创建一个地图,在MXML文件中直接使用标签。其中标签定义一个Map对象。Map创建好之后,使用Layer把需要访问的数据加载到Map上,在标签下面创建子标签。
标签定义一个Layer对象,其中最重要的属性是url,url定义了访问数据的地址,该代码中url指向一个ArcGIS Online提供的TiledMap服务。如下:
<Esri:ArcGISTiledMapServiceLayer
url="cache1.ArcGISonline/ArcGIS/rest/services/
Thematic_Pop_Eco/China_Population/MapServer"/>
专题地图范围是根据专题图的显示范围进行设定的,在每幅图的说明里都列出了专题地图的显示范围;透明度可以根据用户需求自行设置,程序运行情况如图6-3所示。
图6-3  程序运行截图
6.2  ArcGIS API for Flex开发
6.2.1  Map的创建
在Flex中创建一个Esri的Map,用户只需要使用<Esri:Map>标签就可以轻松完成。在<Esri:Map>标签中可以添加属性和响应事件的消息。
代码如下:
<Esri:Map width="100%" height="50%" id="EsriMap"
creationComplete="EsriMapCreateComplete()"
resize="EsriMapResize(event);"
extentChange="EsriMapExtentChange(event);"
mouseMove="OnDrawMouseMove(event)" />
width和height定义Map的大小,id=“EsriMap”唯一标识了这个map。针对map的消息也有很多,最常用的就是creationComplete、resize和鼠标消息了。现在Map有了,那么如何让它显示数据呢,这就需要给<Esri:Map>标签添加一个Layer子标签。在AGS Flex API 中有以下几种类型的Layer。
z ArcGISDynamicMapServiceLayer:用来使用ArcGIS Server REST API 提供的动态地图服务资源。
z ArcGISImageServiceLayer:用来使用ArcGIS Server REST API 提供的图像(image)
第6章  ArcGIS for Flex
服务资源。
z ArcGISMapServiceLayer:是ArcGIS Server地图服务的基类。
z ArcGISTiledMapServiceLayer:用来使用ArcGIS Server REST API提供的缓存地图服务资源。
z ArcIMSMapServiceLayer:用来使用ArcIMS图像服务。
z GPResultImageLayer:用来查看以jobId和parameterName标识的Geoprocessing 任务结果。
z GraphicsLayer:这是包含一个或多个Graphic特性的层。
其中GraphicsLayer作为支持客户端添加Graphic特性的图层,是需要在客户端表现的,或者交互操作中产生的要素都要加到这个Layer上。
下面,就添加一个ArcGISTiledMapServiceLayer和GraphicsLayer到Map上:
<Esri:Map width="100%" height="50%" id="EsriMap"
creationComplete="EsriMapCreateComplete()"
resize="EsriMapResize(event);"
extentChange="EsriMapExtentChange(event);"
mouseMove="OnDrawMouseMove(event)" >
<Esri:ArcGISTiledMapServiceLayer
url="server.ArcGISonline/ArcGIS/rest/services/
Esri_StreetMap_World_2D/MapServer" />
<Esri:GraphicsLayer id="myGraphicsLayer" spatialReference="{sr}"/>
</Esri:Map>
其中,<Esri:ArcGISTiledMapServiceLayer>标签中的url属性为提供该服务的地址。<Esri:GraphicsLayer>标签中的spatialReference属性定义了该图层的空间参考系。
创建一个空间参考系时,只需要使用<Esri:SpatialReference>标签就可以了,其中wkid 是Esri已经定义好的空间参考系的ID,具体ID对应的空间参考可通过如下网址查:
resources.Esri/help/9.3/ArcGISserver/apis/REST/
i ndex.html?gcs.html
如下所示为创建一个wkid=“4326”的空间参考系:
<Esri:SpatialReference id="sr" wkid="4326"/>
在<Esri:Map>下面添加<Esri:extent>子标签,就可以控制当前的显示范围了:
<Esri:extent>
<Esri:Extent id="EsriMapExtent" xmin="116" ymin="39.5"
xmax="116.5" ymax="40.5"/>
</Esri:extent>
其中x是经度,y是纬度。这样一个北京地区的Map就可以显示到面前了。
完整代码如下:
<?xml version="1.0" encoding="utf-8"?>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。