熊學新 古曉蓓 華亮春
摘要:本文主要介紹 Flex Viewer開發(fā)框架和構件,并基于ESRI Flex Viewer框架部署和構建Web的應用程序,并以此架構為基礎開發(fā)某市的公共服務平臺。
關鍵詞:Flex;ArcGIS;ArcGIS Server;RIA;公共服務平臺
WebGIS即萬維網(wǎng)地理信息系統(tǒng),是利用交互網(wǎng)絡技術擴展和完善地理信息系統(tǒng)的一項技術。WebGIS實現(xiàn)技術總的歸納起來可以分為基于瘦客戶端和胖客戶端兩種方案?;谑菘蛻舳说姆桨钢锌蛻舳酥徊捎脴藴实腤EB技術,如HTTP、HTML和Javascript。胖客戶端的發(fā)展則是通過下載安裝插件來增強瀏覽器的能力。代表技術有Plug-in、ActiveX控件技術、Java Applet技術和SVG技術。瘦客戶端的開發(fā)模式已經(jīng)成為當前WebGIS的主流開發(fā)方式,基于B/S架構的WebGIS得到迅速發(fā)展,但是隨著互聯(lián)網(wǎng)影響的不斷擴大,以及GIS技術廣泛應用到各行各業(yè)中,人們已逐漸不滿足于目前的WebGIS網(wǎng)頁技術的表現(xiàn)效果和交互性,而希望WebGIS有類似C/S的表現(xiàn)效果和交互性。
RIA(Rich Internet Application,富互聯(lián)網(wǎng)應用系統(tǒng))是新一代網(wǎng)絡應用程序,它把桌面應用程序的交互性和用戶體驗與傳統(tǒng)的Web應用的部署靈活性和成本分析結合起來,具有無需刷新頁面并提供快速界面響應等優(yōu)點。
Flex與REST進行結合是目前非常熱門的分布式系統(tǒng)解決方案之一。將這個方案應用到WebGIS中,就能輕便地建立起表現(xiàn)力豐富、交互性極好的基于Web的地圖應用程序。本文基于Flex Viewer構架,重點介紹Flex Viewer框架的構建,部署針對Web的應用程序。
1Flex Viewer簡介
ArcGIS Flex API是ArcGIS在RIA(富英特網(wǎng)應用)領域的第一個產(chǎn)品,因此選擇了最為成熟的Flex/Flash平臺。使用ArcGIS Flex API可以開發(fā)運行于瀏覽器中的Web應用,并且使地圖的展示更加的美觀。FlexViewer框架就是使用了arcgis flex API技術,集成了一個完整的用戶界面和一些GIS常用的功能,使程序員更加專注于自己的業(yè)務邏輯而不是頁面的設計。Flex Viewer的設計原則是SIMPLICITY(簡單)。因為簡單原則,F(xiàn)lex Viewer易于部署、配置和擴展。為了達到“簡單”這個目的,F(xiàn)lex Viewer在設計和實現(xiàn)上未引入第三方框架。但是從其框架結構上,我們能捕捉到一些Flex框架中最佳實踐的影子,比如事件機制就與PureMVC中的Notification機制類似。
2Flex Viewe架構
2.1 架構介紹
Flex Viewer框架的構建有助于開發(fā)和部署針對GeoWeb的應用程序,使得能夠充分的發(fā)揮服務器端的空間服務的能力。服務器端的服務通過ArcGIS服務器和ArcGIS在線數(shù)據(jù)提供。地球空間信息服務可以由工作在軟件即服務方式的服務提供商獲得,比如ArcGIS在線數(shù)據(jù)庫、ArcGIS服務器或者是像GeoRSS反饋、KML文件庫以及JSON/REST數(shù)據(jù)等網(wǎng)絡數(shù)據(jù)源。
2.2 Flex Viewer實例的生命周期
一個 Flex Viewer框架的實例從開始應用程序的設計到用戶界面經(jīng)歷了一個簡單的生命周期,期間主要的5個事件如下:
(1)Flash播放器從加載和運行容器文件開始一個Sample Flex Viewer框架的應用程序。
(2)這個Flex Viewer容器再從網(wǎng)絡服務器加載XML格式的配置文件和皮膚文件并應用于整個應用程序。
(3)在配置文件的基礎上,F(xiàn)lex Viewer容器會從ArcGIS在線數(shù)據(jù)和ArcGIS9.3服務器下載相關的地圖信息,然后會從配置文件中加載并且在控制條上顯示菜單和來自配置文件的標記信息。
(4)Flex Viewer容器的微件管理器會從XML配置文件指定的URLs下載并加載相關的微件文件(一般是swf文件)。
(5)用戶利用控件來實現(xiàn)各種業(yè)務邏輯。
2.3 Flex Viewer容器
Flex Viewer容器使設計人員能夠擺脫地圖管理、地圖導航、應用配置、組件間的通信、數(shù)據(jù)管理等繁重復雜的編程工作,專注于核心業(yè)務功能開發(fā),尤其是那些利用ERSI公司的ArcGIS技術的網(wǎng)絡應用開發(fā)人員。只需要在Flex Viewer應用程序的配置文件中增加配置項,就可以將功能以widget的形式快速部署到已有的Flex Viewer應用中。 Flex Viewer容器由一系列高內聚、低耦合組件組成。容器會把關注的任務交給相應的組件去完成。這種設計方法不但簡化了代碼維護和定制,而且縮小了模塊編寫過程中產(chǎn)生的阻力。
3配置Flex Viewer
3.1 config配置文件
對于Flex應用ArcGIS的瀏覽器有一個主配置文件名為config.xml ,這是默認的應用程序配置文件。它控制了系統(tǒng)外觀、功能、應用程序和數(shù)據(jù)內容。它位于主flexviewer安裝文件夾。 config.xml的內容可分為四個主要部分:
(1)一般特性(例如,應用程序的標題,樣式顏色,字體)
(2)應用程序用戶界面(例如,部件構成部分瀏覽器UI)
(3)地圖內容(如底圖和業(yè)務層)
(4)構件容器
通過編輯config.xml這個文件,查看器應用程序可以很容易地配置,以滿足任何特定的業(yè)務需求。(由于篇幅有限,此處代碼省略。)
①title:Flex Viewer自帶Banner實現(xiàn)的標題;
②subtitle:Flex Viewer自帶Banner實現(xiàn)的副標題;
③logo:Flex Viewer自帶Banner實現(xiàn)的Logo圖標;
④style:用來設置全局的組件樣式,具體詳見UIManager代碼;
⑤⑥⑦⑧UI Elements:指Control Widget,比如HeaderControllerWidget、NavigationWidget等這些提供系統(tǒng)級別功能的Widget;
⑨map:Flex Viewer用來設置地圖屬性,包括底圖、業(yè)務圖層;
⑩widgetcontainer:Business Widget的容器,用來管理Business Widget。Business Widget指提供業(yè)務功能的Widget。
需要說明的是,基于Flex Viewer開發(fā)業(yè)務系統(tǒng),一般通過實現(xiàn)自定義的Business Widget來實現(xiàn)具體的業(yè)務功能,通過修改或者自定義Control Widget實現(xiàn)符合需求的系統(tǒng)級別功能組件。所以,配置文件中的前三項并不是必須的,通常我們的業(yè)務系統(tǒng)需要更具特色的Banner實現(xiàn)。Flex Viewer各部分與配置文件的對應關系見下圖:
3.2 Widget配置文件
在Flex Viewer的設計中,每個Widget都可以有一個配置文件,來配置Widget所需要的各種資源,提倡的做法是配置文件名與Widget名稱保持一致,并且位于同一目錄下。當然,Widget的配置文件不是必須的,當不需要配置信息時,配置文件可省略。
在具體系統(tǒng)的開發(fā)過程中,應盡可能多的將Widget用到的資源放到配置文件中,這樣的話,即便在系統(tǒng)交付之后,用戶也可以通過修改配置文件達到特定需求,而不需要更改源代碼。
4結語
基于ESRI Flex Viewer 框架克服了原有WebGIS開發(fā)中存在的交互性差、響應速度慢等缺陷,它能夠呈現(xiàn)更加豐富、體驗性更強的用戶界面,為WebGIS的應用提供了一種嶄新的表現(xiàn)機制?;贔lex的可重用、可擴展的框架設計,使得功能擴展成為可能,大大地提高了開發(fā)和部署效率;GIS服務器動態(tài)地圖渲染和地圖切片技術相結合以及基于AMF協(xié)議的Flash Remoting通信技術,使得空間信息發(fā)布和瀏覽的速度大大地提高,為WebGIS應用的開發(fā)提供了新的思路。但是由于框架設計的局限性和Flex技術亟待進一步發(fā)展,還有一些問題如公眾地圖數(shù)據(jù)的結合使用、設計一個更加完善的二次開發(fā)框架等,都需要進一步的研究和探索。