基于ArcGIS API for Flex的Web应用初探

2012-11-27 06:57:28静,耿
地理空间信息 2012年3期
关键词:图层视图浏览器

贾 静,耿 衬

(江西理工大学建筑与测绘工程学院,江西赣州341000)

基于ArcGIS API for Flex的Web应用初探

贾 静,耿 衬

(江西理工大学建筑与测绘工程学院,江西赣州341000)

ArcGISFlex API是ArcGIS在RIA领域的第一个产品,因此选择了最为成熟的Flex/Flash平台,使用ArcGISFlex API可以开发出具有丰富地图功能的互联网应用,包括浏览器中的Web应用或者运行于桌面的AIR应用。主要介绍了ArcGIS Flex API的主要对象和功能组件的使用;如何发布一个基于Rest的ArcGIS Server地图服务;开发时如何调用服务。

ArcGIS Flex API;REST;Web应用

随着Internet的发展,地理信息系统正在逐渐地走进人们的视野,成为当今社会的热点,国内外的 GIS厂商都对 WebGIS进行研究和开发,并发布各自的产品,ESRI当然也不例外。在这个Web的时代,ArcGIS Server自然就成了ArcGIS产品核心,为了帮助用户开发各种应用程序,访问ArcGISServer提供的各类服务,ESRI公司推出了一系列的客户端应用开发框架,包括ADF、ArcGISServer JavaScriptAPI、ArcGISAPIfor Flex、ArcGIS API for M icrosoft SilverLight等。基于 ArcGIS Server,使用ArcGIS API for Flex可以建立漂亮的富互联网应用程序Rich InternetApplications(RIAs),可以使ArcGIS提供的各种资源(如Map、GP模型)和Flex提供的组件(如Grid、Chart)相结合,构建表现出色、交互体验良好的Web应用;而且其开发环境很容易搭建,在开发的时候,开发人员甚至不需要安装ArcGIS Server,ESRI已经准备了很多在线Sample资源,ArcGIS APIfor Flex可以通过URL形式直接去访问。宏观上来看,客户端应用开发框架和RIA应用会成为今后2年GIS发展的一个趋势。

1 ArcGIS API for Flex框架开发的平台

1.1 RIA的概念

RIA(Rich InternetApplications)是富互联网应用程序的缩写,是新一代网络应用程序,概念最早是由Macromedia公司在2002年提出的。它将桌面程序的表现力与浏览器的程序方便、快捷结合在一起,具有丰富的数据模型可以将部分原本需要在后台程序处理的问题转移到客户端,使数据能够被缓存在客户端,从而可以实现一个比基于HTML的响应速度更快、且数据往返于服务器的次数更少的用户界面。RIA技术提供了比HTML更为丰富的界面表现元素,密集、响应速度快和图形丰富的页面元素与数据模型结合在一起,为用户提供好的使用体验。

RIA相比传统Web优势在于:表现力丰富、网络效率高、交互能力强、面向操作系统和浏览器透明、沙箱提供更可靠的安全性和易于与现有的系统集成;其局限性在于客户端引擎需要下载和安装,目前难以做SEO[1]。

目前RIA主流的开发技术有:HTML5、AJAX、Flash/Flex、Silverlight、JAVA FX,其中Flex是Adobe公司开发的支持RIA开发和部署的技术产品,主要是面向企业级的应用。

1.2 Flex的概念

Adobe Flex是支持RIA的开发和部署一系列发展中的技术和产品线的概括词,包括the Flex Framework、Flex Builder 2、Flex Enterprise Services 2等。

传统的程序员在开发动画应用方面存在困难,FLEX试图通过提供一个程序员们已经熟知的工作流和编程模型,让程序员更快更简单地开发动画及RIA应用[2]。在多层式开发模型中,FLEX应用属于表现层,它是Java web container或者 .net server的一个应用,根据.mxm l文件(纯粹的xm l描述文件和Actionscript)产生相应得.sw f文件,传送到客户端,由客户端的flash player或者shockwave player解释执行,给用户以丰富的客户体验。成功案例有:QQ农场,易贝购物。

1.3 REST的概念

REST(Representational State Transfer)是代表状态传输的缩写,它代表了分布式超媒体系统的体系结构风格,它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

REST本身只是为分布式超媒体系统设计的一种架构风格,而不是标准。它结合了一系列的规范,形成了一种新的基于Web的架构风格:

1)资源通过 URL来制定和操作。网络上的所有事物都被抽象为资源(resource),每个资源对应一个唯一的资源标识符(resource identifier)即URL。

2)对资源的操作包括获取、创建、修改和删除,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。

3)连接时无状态的,即从客户到服务器的每个request都包含理解该request所必须的所有信息,客户端和服务器端不必保存对方的详细信息,服务器只需要处理当前request,而不必了解所有的request历史。

4)能够利用Cache机制来提高性能。

Flex与 REST进行结合是目前非常热门的分布式系统解决方案之一。基于Flex+REST的WebGIS系统总体构架相对于与传统的 REST风格构架组成要简单些,只包括2个部分:ArcGISServer服务端和装有FlashPlayer的浏览器端。服务器端采用 ArcGIS Server9.3或以上版本,通过ArcGISServerManager发布为REST服务,在Flex Builder3.0中配置GIS服务的API环境,利用API进行实例开发,开发完成后进行最终测试、发布。在ArcGIS Server上发布了地图后,可以通过浏览器查看发布的服务,只要在浏览器中输入URL地址,就可以访问ArcGIS Server的REST服务目录,方便查看可用的地理信息系统网络服务,也可以获取开发过程中的有用信息,在应用程序开发过程中就可以使用这些服务[3]。具体的使用在后面会详细介绍。

2 ArcGIS Flex API应用程序的实现

ArcGIS API for Flex是ArcGIS在RIA领域的第一个产品,开发运行于浏览器中的Web应用或桌面的AIR应用,它专注于GIS功能的实现而不重复地创造组建,可以非常便捷地开发使用地图功能和 REST接口提供的GIS查询及分析功能的应用程序。开发ArcGIS API forFlex的程序需要Flex环境的支持,分为Flex Builder独立开发和Flex Builder Plugin(Eclipse插件版)。在新建工程的时候把下载的ArcGIS Server API for Flex添加到libaray path选项卡下,就可以开发应用程序了。

2.1 Flex API中的基本概念

MapSerciceLayer对应ArcGIS发布的地图服务,不同种类的地图服务将会对应不同的 MapSerciceLayer,其对应关系如表1所示。

表1 M apSerciceLayer分类表

GraphicLayer与Graphic指客户端的图层,根据各种情况动态地在客户端实现一些符号化的几何对象,Graphic是一个可视化的、可响应鼠标事件的客户端要素,有3个很重要的属性:geometry、symbol和attribute。

Geometry定义了几何的形状,一般有点(MapPoint)、多点(Multipoint)、多线段(Polyline)、多边形(Polygon)和边界范围 (Extent)。

Symbol定义了Geometry的符号表现形式,一般有点符号 (MarketSymbol)、线符号 (LineSymbol)、面符号 (FillSymbol),还有文字符号 (TextSymbol)、信息提示符号 (InfoSymbol)等其他符号帮助进行其他信息的辅助表达。Attribute表示属性[4]。

2.2 地图功能组件的使用

1)Map组件。Map组件是ArcGISFlex API中唯一的可视化组件,ArcGIS Flex API中所有的操作和功能都会在Map中进行。Map中包含各种Layer,大致分为2种,一种是对应某个地图服务的MapServiceLayer;另一种是用于绘制自定义要素的GraphicLayer。添加Map和Layer的代码:

运行效果截图如图1所示。

图1 Map组件使用运行截图

控制地图缩放的zoomSlider、地图比例尺scaleBar以及ESRI的logo可以隐藏,zoomSlider和scaleBar除了可以被隐藏掉,还可以通过制定样式来改变外观。

以下CSS代码将Map的zoomSlider移到了右边:

还可以实现地图四周的导航按钮、地图中心的十字符号、拉框缩放的方框样式,Map有很灵活的可配置性,各种元素的外观也很容易定制,如果有特殊的需要,Map也可以通过隐藏所有元素,来加上自己的内容。

2)Navigation工具。Navigation工具提供了对Map进行导航的诸多功能,它可以实现漫游、拉框放大、拉框缩小等类似ADF中Tool的功能和前一视图、后一视图、全图等类似于ADF中Comm and 的功能。它并不是一个工具条,而是提供了一些功能,可以把Flex组件绑定到Navigation的功能上。Navigation中漫游、拉框放大、拉框缩小等工具条按钮是绑定的,它借助Flex中的TggleButtonBar作为这些功能的宿主。

运行效果截图如图2所示。

图2 Navigation工具使用运行截图

Navigation中上级窗口、下级窗口、复位等功能和工具条绑定,上级窗口和下级窗口的按钮并不总是可用的,若当前视图已经是第一视图时,上级窗口按钮失效,当前视图已经是最后一个视图时,下级窗口按钮失效。

3)Draw工具。Draw工具提供了在客户端绘制各种几何对象的功能,用一个 ToggleButtonBar去绑定Draw工具的功能。

4)InfoWindow窗口。InfoWindow窗口主要提供了在Map上弹出信息提示的功能,定义一个Map的时候,Map会生成一个自带的InfoWindow窗口,并放置在自己的infoWindow属性中。下面代码是实现在地图上弹出一个InfoWindow,并在其中放上一个图片:

效果如图3所示。

图3 Draw工具使用运行截图

InfoWindow使用的重点在于其content属性,它是InfoWindow窗口中的信息内容,对应一个DisplayObject的对象,即任何Flex中的可视组件都可以放置于其中,其代码如下:

3 ArcGIS Flex API应用程序的发布

用ArcGIS API for Flex开发的程序中Flex是前端展现,后台的连接通过ArcGIS Server REST Service完成,而且不需要在本机上安装ArcGIS Server,只要通过网络连接到其他机器上的ArcGIS Server即可访问资源了。在Flex中可以将ArcGISServer的地图和任务应用到Web应用程序中。

1)地图的发布。对于应用程序展现和操作需要的资源,可以通过GIS服务器发布,即地图服务的发布。基于RESTAPI的WebGIS应用从ArcGISServer客户端得到的地图服务数据其实是由一些地图服务图层(包括ArcGISTiledMapServiceLayer、ArcGISD ynamicMapS-erviceLayer、ArcGISImageServiceLayer、ArcIMSMap ServiceLayer)组成的。每一个地图服务层都通过URL对应ArcGISServer中发布的一个Map Service,而每一个Map Service都是源自于一个地图文档(Map Document),扩展名是*.mxd。

ArcGISServer提供了2种方法来发布空间服务。一种是利用ArcCatalog中的ArcGIS Server服务管理方式进行发布;另一种是通过网页形式的ArcGISServerManager方式进行服务的发布与管理。采用第2种方式,可以摆脱ArcGIS的桌面环境,方便在远程发布服务。

在浏览器的地址栏中输入:http://host:8099/arcgismanager/main/login.jsf,进入登陆界面,输入用户名和密码进入发布主页面,在服务器管理器中的Services选项卡,点击“Add New Service”添加新的地图发布。

地图发布成功后,测试浏览Rest服务,访问ArcGIS Server的 REST服务目录时,URL地址是:http://< host>:8399/arcgis/rest/services,打开主页面,点击“Export Output”,可以查看该图层的详细信息。

2)在 Flex中调用该服务。在开发基于 Flex的ArcGIS应用程序时,用MXML和ActionScript3.0调用Flex API中的类编写代码来调用ArcGIS Server中的资源,只需要输入该资源的URL地址。代码如下:

运行后就可以看到自己发布的地图服务。需要注意的是资源的类型和图层标签的类型相对应,如果资源是未缓存的动态图层,要使用图层标签;如果是缓存的 Tiled图层,则应使用标签。

4 结 语

ArcGIS API for Flex使用起来比ADF框架更加轻巧,而且可以实现的功能很强大,可以与多种当今主流技术交互,如 Javascript、ajax等。本文主要介绍了基于ArcGIS API for Flex框架开发Web应用程序的初步实现,介绍了关于ArcGIS API for Flex的初步认识,对于开发的平台和涉及到的一些概念进行了介绍,举例说明了一些组件的使用,在此基础上运用基于ArcGIS Flex的API做进一步的Web应用开发,同时还介绍了如何在ArcGISServer上发布基于Rest的地图服务,以及在Web应用开发时如何使用自己发布的服务。本文只是关于基于ArcGIS API for Flex的Web应用开发的基本入门介绍,在此基础上可以利用 ArcGIS Flex的API开发出功能强大的Web应用程序,并且可以充分结合Flex的动画效果,做出更炫的地图界面。

[1] 李奇宇.基于构件的RIA Web开发平台研究[D].成都:电子科技大学,2003

[2] 胡斌峰.基于Flex的WebGIS客户端平台的设计与实现[D].杭州:浙江大学,2011

[3] 袁煜锋.基于Flex与REST的WebGIS研究[D].上海:华东师范大学,2009

[4] http://help.arcgis.com/en/webapi/flex,2011-10-11.

[5] 杨占坡,杨铭,翁顾.Flex 3 RIA开发详解与精深实践[M].北京:清华大学出版社,2009

[6] YI Zheng.Evaluation of the RIA Technology Macromedia Flex for User-Centered Social Software.2006.5

[7] J.Duhl.Impact of Rich Internet Application White Paper,2003

Web Application Preliminary Studies Based on ArcGIS API for Flex

by JIA Jing

ArcGIS Flex API is first product in the field of RIA ArcGIS, so choose the most mature Flex/Flash platform.Using ArcGIS Flex API can develop the function of the map which has rich Internet applications,including the Web browser running in the desktop application or AIR apps.This article mainly introduced the ArcGIS Flex API's main object and the use of functional components,how to release a based on the ArcGIS server map services and development how to call service.

ArcGIS Flex API,REST,Web application

2011-10-11

项目来源:国家自然科学基金资助项目(40971234)。

P208

B

1672-4623(2012)03-0114-05

贾静,硕士,主要研究方向为WebGIS应用与开发。

猜你喜欢
图层视图浏览器
反浏览器指纹追踪
电子制作(2019年10期)2019-06-17 11:45:14
巧用混合图层 制作抽象动感森林
5.3 视图与投影
视图
Y—20重型运输机多视图
现代兵器(2017年4期)2017-06-02 15:59:24
SA2型76毫米车载高炮多视图
现代兵器(2017年4期)2017-06-02 15:58:14
环球浏览器
环境与生活(2016年6期)2016-02-27 13:46:37
再见,那些年我们嘲笑过的IE浏览器
英语学习(2015年6期)2016-01-30 00:37:23
图层法在地理区域图读图中的应用
地理教学(2015年18期)2016-01-06 12:00:38
浅析“递层优化法”在矿井制图中的应用
河南科技(2014年6期)2014-04-04 08:00:42