2008年10月15日星期三

ArcGIS API for Flex入门 - 3.数据的绑定

在这一小节里,我们主要讨论数据绑定的问题。事实上这是属于Flex的范畴,如果你对Flex语言很熟悉,那你完全可以跳过这一节。

在前面的小节,我们已经学会了如何在Flex Application中加入一个Map组件,并且在Map组件中添加了一个ArcGISTiledMapServiceLayer图层,当然,ArcGIS Flex不仅支持切片图层,还有ArcGISDynamicMapServiceLayer、ArcGISMapServiceLayer、ArcGISImageServiceLayer、ArcIMSMapServiceLayer,这些类型的图层都可以顾名思义,熟悉ArcGIS Server的你肯定不陌生。

这时,如果你想要实现这样的功能:点击一个按钮(或者选中下拉框的一个选项),当前的Map中的地图就自动地切换——就像Google Map一样,你可以选择卫星图或者切片地图。当然,你可以这样做:在每个按钮的Click事件中,获得需要更新的图层URL,然后通知Map:换图层了!没有任何问题,但是,在Flex有更加“面对对象”的方法:数据绑定。

我是一个很懒的人,所以我经常引用的代码就是ArcGIS API for Flex自带的Sample(后面我说的Sample就是Flex API的例子,我就不重复说明了,这样的简称应该没有诸如RTFM之类的难懂吧)。这次也不例外,让我们打开Sample中的agol.mxml。
我们注意,在Map元素的属性中,有一个url定义,当然这就是地图服务的地址。然而这个地址并不是一个通常的字符串,在其中嵌入了一段“{servicePicker.selectedItem.toString()}”。这个servicePicker是什么呢,往下看几行,我们可以看到,在这个Flex Application中的ComboBox的id是servicePicker,这个ComboBox就是供你来选择地图服务的。顺便提一下,Flex背后站着的其实是Flash,因此id在Flex中有着非常重要的作用。

好,我们看看这段代码到底是什么意思。Flex组件默认监听了名为propertyChange的事件,当自身的数据改变的时候,它就会分发这一事件,这时,使用花括号括起来的对象就会接受到对应的事件并更新自身的数据。“{servicePicker}”监听的是id为servicePicker的下拉框的组件,当我们在下拉框选择了某个地图服务的时候,“{servicePicker.selectedItem.toString()}”就会根据这个下拉框的选择项生成一个字符串,再把字符串拼接到Map的url属性中去。Map就会根据新的url获取数据并进行渲染。这就是一种“面对对象”的数据处理方式。

上一节 下一节

2 条评论:

匿名 说...

牛魔王,没有在sample中找到agol.mxml 这个例子具体是在哪个地方呢?

牛魔王 说...

ArcGIS API for Flex开发包里的Samples/src目录下就有