ArcGIS_Server_开发之Flex实践.ppt_第1页
ArcGIS_Server_开发之Flex实践.ppt_第2页
ArcGIS_Server_开发之Flex实践.ppt_第3页
ArcGIS_Server_开发之Flex实践.ppt_第4页
ArcGIS_Server_开发之Flex实践.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Esri西安办事处彭剑 ArcGISServer开发之Flex实践 FlexViewer介绍 FlexViewer介绍FlewViewer解析Widget开发示例常见问题及解决思路 大纲 FlexViewer介绍FlewViewer解析Widget开发示例常见问题及解决思路 大纲 为什么推出FlexViewer ArcGISServerforFlexAPIs很丰富 Flex也不错 但是 一个标准的GIS客户端起码包括哪些功能 ArcGISServer的地理处理服务怎么应用 FlexViewer FlexViewer设计目标FlexViewer的优点高度可配置开发简单高内聚低耦合高依赖注入 FlexViewer的界面元素 地图的地址 功能模块的组合都是由一个config xml来控制Widget 功能模块 也是设计成一个良好的开发框架 开发简单 高度可配置 取决于开发者 配置文件说明 Config xml主要标签menusMapMapservice type alpha visible Extent initialextent fullextent xmin ymin xmax ymaxbasemapLivemapNavtoolWidgetsWidgetLabelMenuConfigLinks Widget 属于FlexViewer的模块每个Widget包含一个业务逻辑开发人员可以继承BaseWidget来扩展自定义功能 Widget开发模式 开发人员更加专注核心业务逻辑开发过程简便 继承IBaseWidget 使用IWedgeTemplet布局 封装业务逻辑 加入到config 编译运行 开发过程 com esri solutions flexviewer widgets SearchWidget swf FlexViewer介绍FlewViewer解析Widget开发示例常见问题及解决思路 大纲 FlexViewer剖析 IBaseWidgetWidgetTempletSiteContainerMapManagerWidgetManagerAppenvent IBaseWidget Widget基类 定义了基本属性 状态 地图和配置文件和WidgetManager交互 管理每个Widget生命周期 WidgetClass IBaseWidget的实现类自定义的Widget必须继承的基类WidgetManager会验证所有扩展了BaseWidget的MXML或AS类扩展了BaseWidget的类可被编译为独立的SWF IWidgetTemplate IWidgetTemplate接口定义了WidgetTemplate和BaseWidget之间进行协作的方法 WidgetTemplate Widget模板是UI组件 为Widget提供了基本的UIlayout和行为包括风格化的窗口面板 styledwindowpanel 标题栏 titlebar 以及自定义的图片按钮 customimagebuttons 使用模板可以使开发者专注于业务逻辑开发而且整个程序风格统一 模板也可以定制 必须实现IWidgetTemplate WidgetTemplateid wTemplate widgetClosed widgetClosedHandler event widgetOpened widgetOpenedHandler event 模板不是必须的也可以开发自定义的组件 SiteContainer FlexViewer中的容器 管理所有的组件负责事件的监听 分发 所有的全局事件都是从此进行分发宿主 FlexViewer的管家 Config相关类 收集配置信息 根据配置设置页面布局或者读取业务资源ConfiigDataconfigManager不仅读取全局的Config xml 单个Widget也是通过它来读取通过http方式读取 MapManager MapManager类是地图有关对象的管理器配置文件设置的图层 菜单等参数在这进行解析定义了大量的事件 扩展起来非常方便 当然 你也可以自己定义事件再去扩展 WidgetManager Widget管理器WidgetManager管理着widget的生命周期widget菜单点击事件添加监听 创建 加载widget Appenvent 定义全局事件ID InfoPopup 弹出窗口 定义一些基本的动作 弹出内容的展现方式BaseWidget定义了showInfoWindow方法 由MapManager来监听 widgetShowInfo目前支持显示文字 分行显示 图片 jpg png gif 视频 Flv 更多的元素支持需要扩展只需要对Link进行解析加载即可 FlexViewer介绍FlewViewer解析Widget开发示例常见问题及解决思路 大纲 编写Widget 使用WidgetTemplate模板访问Map在Map上显示Widget数据从Map接收数据 点击 画线 等 在Widget中控制导航开发无模板的Widget开发自定义WidgetTemplateWidget配置 使用WidgetTemplate 使用WidgetTemplate 第一步 将widget加到config xml文件中第二步 保存文件并且编译工程第三步 运行FlexViewer应用程序 mywidgets MyFirstWidget swf 第四步 从菜单按钮点击MyFirstWidget 访问Map FlexViewer是以地图为中心的应用 程序初始化后widget就可以访问到map服务BaseWidget类中定义了Map变量 Widget加载后 widgetmanger就会将当前活动map对象传递给widget对象所有BaseWidget的派生类可以直接访问map对象 访问Map publicclassBaseWidgetextendsModuleimplementsIBaseWidget publicvarconfigData ConfigData publicvarconfigXML XML publicvarmap Map publicfunctionsetMap value Map void map value privatefunctionwidgetMenuClicked event AppEvent void if widgetTable containsKey id else if moduleTable containsKey url widget setMap map 访问地图 示例 在Map上显示Widget数据 AddGraphicsLayer CDATA privatefunctioninit void graphicPointSym newPictureMarkerSymbol widgetIcon 30 30 graphicsLayer newGraphicsLayer graphicsLayer symbol graphicPointSym map addLayer graphicsLayer 推荐每一个Widget创建一个GraphicsLayerGraphicsLayer 在Map上显示Widget数据 当Widget打开 最小化时 显示 关闭GraphicsLayer privatefunctionwidgetClosedHandler event Event void graphicsLayer visible false privatefunctionwidgetOpenedHandler event Event void graphicsLayer visible true 从Map接收数据 点击 画线等 Widget可能需要接收来自Map的数据 如用户与Map交互操作产生的点 线 面数据Widget模型通过内嵌的setMapAction函数接收数据 privatefunctionactivateTool void setMapAction Draw POINT ClickPoint drawEnd privatefunctiondrawEnd event DrawEvent void vargeom Geometry event geometry varpt MapPoint geomasMapPointAlert show Clicklocation pt x pt y setMapAction BaseWidget as publicfunctionsetMapAction action String status String callback Function void vardata Object tool action status status handler callback SiteContainer dispatchEvent newAppEvent AppEvent SET MAP ACTION false false data action Draw EXTENTDraw MAPPOINTDraw LINEDraw POLYLINEDraw POLYGONDraw MULTIPOINTDraw FREEHAND POLYLINEDraw FREEHAND POLYGONStatus 控制条上显示的状态信息callback 画操作完成后MapManager调用的操作 在Widget中控制导航 可能需要在widget中控制地图的导航 如关闭widget时关闭graphics图层显示并且使地图处于Pan模式 WidgetTemplateid wTemplate widgetClosed widgetClosedHandler event privatefunctionwidgetClosedHandler event Event void graphicsLayer visible false setMapNavigation Navigation PAN PanMap 在Widget中控制导航 setMapNavigation BaseWidget as publicfunctionsetMapNavigation navMethod String status String void vardata Object tool navMethod status status SiteContainer dispatchEvent newAppEvent AppEvent SET MAP NAVIGATION false false data navMethod Navigation PANNavigation ZOOM INNavigation ZOOM OUTSiteContainer NAVIGATION ZOOM FULLSiteContainer NAVIGATION ZOOM PREVIOUSSiteContainer NAVIGATION ZOOM NEXTstatus 控制条上显示的状态信息 开发无模板的widget 模板不是必须的 如显示一个时钟 开发自定义WidgetTemplate 自定义widgetTemplate必须实现iwidgetTemplate接口 即实现接口中的setTitle setIcon和setState函数 Widget内容配置 每个widget可以有自己的配置文件配置文件的位置在config xml中指定WidgetManager将widget配置文件的url传递给BaseWidget BaseWidget加载并解析xml配置文件 保存为一个configXML变量 一个XML类型的AS变量 Widget加载完后可以直接访问configXML变量 relative urlpath MyNewWidget swf Widget配置文件示例 http localhost ArcGIS rest services Geometry GeometryServer32618千米米SquareMetersSquareKilometersSquareFeetSquareMilesAcresHectaresPolutionSourceshttp localhost ArcGIS rest services ps MapServer 0RegionCode value PSName PSCode RegionCode FlexViewer介绍FlewViewer解析Widget开发示例常见问题及解决思路 大纲 如何与业务系统结合 FlexViewer是很好 但仅仅是纯GIS应用 业务系统是一个复杂的系统 以数据为导向 GIS只是其中的一小部分 有时候还那么可有可无FlexViewer如何迎合业务系统 嵌入到其他系统里面 怎么和其他的业务接口通信 其实 这是Flex层面的问题FlexViewer能否实现在线编辑 GISRIA开发都要面对的问题按权限加载地图 大数据量下的业务过滤 结合几种方式 WebServiceHttpRemoteObject BlazeDS JavaScript 在线

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论