开发Widget开发工具:Flex Builder3
开发语言:ActionScript & mxml
1)开发环境配置:
a)
首先确保Flex Builder3(Flex SDK 3.1)安装成功,并下载Flex viewer(libs目录中包含ArcGIS API for Flex v1.0)。
b)
解压下载下来的Flex viewer压缩包。
c)
打开Flex Builder3,将刚解压出来的源代码导入到flex workspace中。在导入向导中选择源代码的目录,点击finish。
d)
编译Flex Viewer。选中当前工程,在Project 菜单下选择Build Project。
2)自定义widget开发
a)
新建一个mxml组件(右键单击flex
Viewer ,选择New->MXML Component)。选择组件目录,输入组件名称,并确保该组件继承BasWidget类。
b)
将创建好的widget添加Flex Builder Project Module list。
右键单击Flex Viewer 工程,选择属性(properties),打开属性配置框,然后在左边列表择Flex Modules。单击Add按钮,选择MyFirstWidget.mxml。这一步的目的是确保MyFirstWidget能够被编译成单独的swf文件。
c)
编译widget。
重新编译整个Flex Viewer 工程即可。编译完成之后在bin-debug目录下就会有MyFirstWidget.swf。
3)使用WidgetTemplate
打开MyFirstWidget.mxml文件,内置的WidgetTemplate提供了丰富的界面元素。下面介绍如何部署Widget。
a)
把Widget加入到config.xml文件中。
打开config.xml文件并在<widgets>标签中添加代码:
b)
保存config.xml文件并重新编译Flex Viewer。
c)
运行Flex Viewer。
d)
从Tool菜单中选择My First Widget。
至此,通过代码就完成了个基本的Widget UI 设计,已经有了最大化,最小化,关闭等功能。下一步,就是实现业务逻辑。
4) 访问地图 (Accessing a Map)
Flex Viewer是一个以地图为中心的应用程序,所有的操作都是围绕地图来进行。Flex Viewer初始化之后,Widget就可以访问地图了(来自ArcGIS Server 的地图服务)。
map是BaseWidget类中定义的一个public 属性,只要是继承BaseWidget的类都可以访问改属性,该属性是com.esri.ags.Map(ArcGIS API for Flex)类型,因此可以使用map对象访问任何在ArcGIS API for Flex中的对象。当widget 被加载之后,widget manager会动态的把当前活动的地图对象关联到widget。
5) 在地图上显示业务数据
a)
添加Graphics Layer
建议为每个Widget都创建一个Graphics Layer。
b)
Widget打开/最小化的时候打开/关闭Graphics Layer
WidgetTemplate提供了2个窗口状态的事件:widgetOpened 和 widgetClosed,可以使用这两个事件来同步WidgetTemplate窗口状态的变化和Graphics Layer显示。当widget打开的时候显示Graphics Layer,当widget关闭的时候隐藏Graphics Layer。例子如下:
首先侦听widgetOpened 和 widgetClosed事件。
在widgetOpened 和 widgetClosed事件的响应函数中控制Graphics Layer的显示。
6)Widget中使用绘制功能
在 Flex Viewer 中通过调用setMapAction方法,可以方便的进行地图上的绘制。setMapAction是在BaseWidget类中定义的public方法,因此只要继承于BaseWidget类的Widget都可以使用该方法。
setMapAction方法的定义如下:
参数:
action: String 类型,定义为当前绘制操作的要素类型。对应ArcGIS Flex API 中绘制工具的绘制要素类型。对应列表如表3-2:
表 3-2:flexViewrer与ArcGIS API for Flex绘制消息对应表
Flex Viewer | ArcGIS API for Flex |
extent | Draw.EXTENT |
point | Draw.MAPPOINT |
line | Draw.LINE |
polyline | Draw.POLYLINE |
polygon | Draw.POLYGON |
multipoint | Draw.MULTIPOINT |
freehandpolyline | Draw.FREEHAND_POLYLINE |
freehandpolygon | Draw.FREEHAND_POLYGON |
status: String 类型,在控制栏上显示的状态文本。
callback: Function类型,绘制结束后调用的回调函数。回调函数的定义可以参考下面代码:
未完待续...