技术专栏

gis培训

FlexViewer学习讲堂(1)

作者:周岳昆 邮箱:actc@lreis.ac.cn 发布时间:2014-01-02 19:14:34 阅读(2212)

FlexViewer学习讲堂(1

FlexViewer是由Esri公司推出的基于Web的Flex应用框架,开发人员通过该框架即可快速搭建一个以地图服务应用为目的的RIA应用。

学习FlexViewer,最重要的是理解其框架结构,并在其基础上实现自有业务和需求的实现。其中包括VierContainer、MapManager、ConfigManager、WidgetManager等管理器,以及相应的关联事件。本篇将重点讲述FlexViewer的框架结构,并通过分析事件的分发与监听,确定快速而敏捷的FlexViewer开发方法。

1、FlexViewer的架构

说明: http://dl.iteye.com/upload/attachment/599022/a839c1aa-2a27-31ff-a142-c83a7a37b726.bmp

图1 FleeViewer框架结构

    FlexViewer中,首先构造的就是ViewContainer。ViewContainer类似一个可视化的容器,该容器中承载了ConfigManager、DataManager、MapManager、WidgetManager等容器;

ConfigManger属于配置文件管理器,它主要用于加载并解析的xml文件。在FlexViewer中有一个全局的config.xml配置文档,ConfigManager会将该文档解析成,并生成ConfigData对象。ConfigData对象中包含了XML文档的解析内容,这些内容包括某些全局的配置等(如geometryservice)。除了全局的config.xml文档之外,每一个widget也都对应了一个xml配置文档,该文件将在widget被初始化的时候被解析。所有配置文档的成功解析,都可以通过AppEvent分发 CONFIG_LOADED事件,获取解析的配置文档内容。

    MapManager是一个可皮肤化的容器,其皮肤通过MapMangerSkin设置。它是地图的管理容器,也是FlexViewer的主视图,可通过其修改FlexViewer的主显示界面,也可将其它组件添加到主视图中。MapManager通过皮肤实例化了Map对象,并MAP_LOADED事件分发,进而就可以在WidgetManager中通过事件监听获取Map对象了。

WidgetManager主要用于加载并管理Widget,Widget即是完成业务功能的组件(如主视图最上的Header、左面的MapNavigation等都属于Widget)。在FlexViewer开发中,框架及事件处于主要核心地位, Widget开发则是主要的开发过程,我们将在后面章节中详细介绍如何进行Widget开发。WidgetManager是MapManager的主要子组件,任何widget都要添加在WidgetManager中,并通过相应的事件协调并交互。

2、Flex Viewer事件

    FlexViewer中有一个自定义的核心事件:AppEvent。它的构造函数如下,参数包括了事件类型(type),对象类型(data)以及回调函数。同时,它还通过EventBus分发并监听事件。EventBus即是事件分发器,它继承自EventDispatcher类,是一个singleton类。

public function AppEvent(type:String, data:Object = null, callback:Function = null)
    {
       super(type);
       _data = data;
       _callback = callback;
    }

FlexViewer的框架组织与事件有密切的关系,容器的加载、配置文档的解析都是通过事件获得的。在AppEvent中,比较重要的事件有:

APP_ERROR:APP错误事件

CONFIG_LOADED:加载Config文件完成后调用事件

SET_MAP_ACTION:与地图交互相关的事件,其data参数中包含有地图交互动作的token值,如Zoomin,Zoomout等;

    MAP_LOADED:地图加载后响应的事件

图2 分发AppEvent事件

DATA_FETCH:获得数据时调用

     DATA_CREATE_INFOWIDGET:创建Widget时调用
     WIDGET_RUN:Widget运行时调用;

     WIDGET_CHANGE_STATE:Widget状态变化时调用,其data参数中包含了widgetID和State值
     WIDGET_FOCUS:Widget得到焦点时调用
     WIDGET_ADD:添加Widget时调用
     WIDGET_ADDED:widget已添加后调用

作者:周岳昆 邮箱:actc@lreis.ac.cn

HiGIS技术交流QQ群:336076300

关键词:FlexViewer、架构、事件

中科地理信息系统培训中心-原创文章
转载请注明出处:www.higis.cn/Tech/tech/tId/17/

创新地理知识,共享地理价值

http://www.higis.cn

中科地理信息系统培训中心

关于我们

gis培训

苏州高新区中科地理信息系统培训中心是“国家专业技术人员继续教育基地”指定培训点,是3S方向唯一指定的培训点。同时也是国内唯一获得Esri授权的ArcGIS专业培训与认证机构,为广大用户提供ArcGIS培训、开发和咨询服务,中心已经为中国用户服务20年...详细情况...

联系方式

Email:actc@lreis.ac.cn
苏州总部电话: 0512-68076858
        0512-68075672
北京分部电话: 010-64855687
苏州总部地址:苏州市高新区科灵路78号苏高新软件园5号楼3层
北京分部地址:北京市朝阳区大屯路甲11号中科院地理所2406

顶部 返回
地理信息系统国际培训中心