`
阅读更多
Flex Viewer是ESRI公司推出的可以高效开发基于WEB的地理信息应用系统的一种基本架构。它帮助你屏蔽了底层繁琐的操作,比如通信机制。此框架和服务器端的通信是基于Web Service的。在服务器端,发布出你的服务,比如地图服务,前端只需简单的调用操作。开发人员只需关注你的功能模块设计。

1、Widget开发

在Flex Viewer中,采用Widget的方式进行模块设计。每一个模块都是一个Widget,具体说是BaseWidget。

类的关系如上图所示,IWidgetTemplate和IBaseWidget是接口,WidgetTemplate和BaseWidget分别实现它们。在初始化BaseWidget时,会依赖IWidgetTemplate去初始化每个模块的title、icon等属性。

上图很清晰地给出了一个Widget的处理流程图。要说明的是,由于BaseWidget继承了Module,所以每一个Widget都是一个Module。好处很多,延迟加载,高内聚性,模块之间几乎没有侵入性。

2、总体上Container结构

图中提到了Flex Viewer Container,整个框架看着是一个大的Container,而这个Container是有一些高内聚低耦合的组件组成,如下图:

这里可以看到整个框架是由几个组件构成,ConfigManger用来管理配置文件,WidgetManger管理所有的Widget。等等。。。SiteContainer.mxml持有对这些组件的引用。

3、核心事件处理
因为Flex采用事件机制,那么,在Flex Viewer中各组件(* Manager)之间通信时怎样完成的呢?这里就提到了Flex Viewer中核心类:EventBus. 注意到EventBus采用单例模式,保证在整个框架中只有一个EventBus。SiteContainer.mxml中提供了一系列静态的代理方法可以访问EventBus。

当上图中每一个组件(* Manager)初始化的时候,都会监听相应的事件;而SiteContainer会把监听任务委托给EventBus,并由EventBus统一分发事件。通过这种发布/订阅的消息模式,组件之间可以轻易交互而不用直接访问组件中的方法。所以,这种方式使组件解耦,可复用性很高。

EventBus中使用的事件类型都是由AppEvent.as这个类定义,它负责帮助EventBus在各个组件间传递消息。它是一个自定义事件,负载着数据传递的功能。

总结一下吧,Flex Viewer是基于事件机制,使用模块化设计,每一个模块负责各自的任务,互不侵入。模块之间的消息传递通过EventBus实现。自定义Widget编译完在各自的配置文件中配置路径、图标等信息,并在config.xml中添加此配置文件的路径信息,最后由ConfigManager统一加载config.xml文件。

分享到:
评论

相关推荐

    flexviewer1.3框架源代码

    FlexViewer 1.3 框架源代码是ESRI公司发布的一款基于Adobe Flex技术的Web GIS应用开发框架。这个框架允许开发者构建交互式的、地图为中心的Web应用程序,提供了丰富的地图操作、图层管理以及地理分析功能。在深入...

    FlexViewer分析

    **FlexViewer框架**正是利用了ArcGIS for Flex API的强大功能,通过集成一套标准的用户界面组件和GIS操作功能,简化了GIS应用程序的开发流程。这使得开发者无需深入了解复杂的地图服务细节和技术,就能够快速构建出...

    flexviewer2.3源代码

    标签"flexviewer"、"flex api"、"gis"分别对应了FlexViewer框架、ArcGIS Flex API以及地理信息系统这三个关键概念。这些标签表明该源代码主要涉及GIS领域的开发,并且使用了基于Flex的客户端技术。 在压缩包内的...

    FlexViewer开发教程

    Widget能够与FlexViewer框架内的其他组件交互,比如Map、其他Widget以及服务器等。 FlexViewer中的Widget与Map的交互是通过两种方式实现的:一种是直接操作map实例,另一种是通过BaseWidget封装的方法。例如,...

    FlexViewer解析

    FlexViewer是一种基于Adobe Flex技术的轻量级Web应用程序框架,主要用在地理信息系统(GIS)领域,用于展示和操作地图及地理数据。它允许开发者创建交互式的、丰富的互联网地图应用,用户无需安装任何桌面软件就能...

    flexviewer2.3

    FlexViewer2.3是一款基于Adobe Flex技术的轻量级WebGIS开发框架,它允许开发者根据自身需求自由定制,构建自己的在线地图应用。Flex是Adobe公司推出的一种用于创建富互联网应用程序(RIA)的开源编程语言和框架,...

    FlexViewer开发教程开发指南和相关实例

    FlexViewer是ArcGIS的一种轻量级应用程序框架,主要用于构建基于Web的地图应用。它基于Adobe Flex技术,使得开发者能够创建交互式、丰富的地理信息系统(GIS)界面。本教程将引导你深入理解FlexViewer的开发过程,...

    flexViewer 3.1 src

    FlexViewer是一个开放源代码的框架,它允许开发者构建交互式的地图应用程序,这些应用程序可以嵌入到Web页面中,用于展示和分析地理数据。Flex是Adobe Flash Platform的一部分,它是一种强大的客户端开发工具,能够...

    ArcGIS Server开发框架——FlexViewer

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, ...

    flexviewer简单登陆(新版本能用)

    FlexViewer是一个基于Adobe Flex的轻量级GIS应用框架,用于构建交互式的地图应用程序。在旧版本的FlexViewer中,开发者通常会使用MXML来声明和配置组件,但在新版本中,可能需要转换为ActionScript(AS)代码来避免...

    flexviewer 2.5

    FlexViewer 2.5 是一款基于Adobe Flex技术的开源GIS(地理信息系统)应用程序框架,它为开发者提供了一个构建Web GIS应用的快速开发平台。这款框架主要用于创建交互式的地图应用程序,让用户能够在线查看、分析和...

    flexviewer-2.4-src

    ESRI公司发布的flexviewer2.4框架的源代码,Flex Viewer是ArcGIS Viewer for Flex的简称, Flex Viewer是基于ArcGIS API for Flex(简称AGS Flex API)设计的一个WebGIS应用程序,用户可以通过修改配置文件、自定义...

    FlexViewer2.4(用户界面为FlexViewer1.3样式)

    FlexViewer是ArcGIS的一种轻量级应用程序框架,用于构建基于Web的地理信息系统用户界面。在本项目中,标题提到的"FlexViewer2.4(用户界面为FlexViewer1.3样式)"表明这是一个针对FlexViewer2.4的定制版本,其界面设计...

    ESRI-FlexViewer解析

    ESRI FlexViewer是一个功能强大的Web GIS应用程序,它基于ArcGIS API for Flex(AGS Flex API)开发,为用户提供了一个能够展示底图和业务图层并支持空间分析等功能的平台。FlexViewer经历了多个版本的迭代,从最初...

    FlexViewer2.1

    FlexViewer2.1是一款基于Adobe Flex技术的轻量级WebGIS开发框架,它允许开发者根据自身需求自由定制,构建个性化的Web地理信息系统。这个框架的核心是利用ActionScript 3编程语言,结合MXML来实现与地图服务的交互,...

    FlexViewer解析之示例源码

    FlexViewer解析之示例源码,是一篇详细介绍FlexViewer从基础概念到架构设计再到自定义和扩展的详细文章。FlexViewer,是基于ArcGIS API for Flex(简称AGSFlexAPI)设计的一个WebGIS应用程序。最初的版本为...

    flexviewer-3.0-src 源码

    flex viewer 3.0 源码 下载

    FlexViewer2.5

    FlexViewer2.5是ArcGIS for Flex平台的一个重要版本,它是Esri公司为Web GIS开发提供的一款基于Adobe Flex技术的轻量级应用框架。这款工具主要用于构建交互式的地图应用程序,让用户能够通过Web浏览器查看、分析和...

Global site tag (gtag.js) - Google Analytics