[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)

目的:
1.ArcGIS API for Flex实现Toolbar功能,包括ZoomIn、ZoomOut、Pan、PrevExtent、NextExtent、FullExtent功能
准备工作:
1.这次地图数据就用Esri提供的http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer
完成后的效果图:

[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)
开始:
1.启动Flex Builder3新建工程以及引入ArcGIS API for Flex library的开发包,这个过程前面几篇都讲过了这里就不啰嗦了。
2.新建ToolBar.mxml页面,然后在页面上添加Map控件以及设置ArcGISTiledMapServiceLayer,具体代码如下:

 

1[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)<?xml version="1.0" encoding="utf-8"?>
2[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" backgroundColor="white" xmlns:esri="http://www.esri.com/2008/ags">
3[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)<mx:Canvas width="446" height="300" borderStyle="solid" borderThickness="3" borderColor="#3691D1" horizontalCenter="0" verticalCenter="19">
4[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)    <esri:Map id="myMap" width="100%" height="100%" panArrowsVisible="true" logoVisible="false" >
5[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)        <esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer"/>
6[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)    </esri:Map>
7[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)</mx:Canvas>
8[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)</mx:Application>
9[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)

3.接下来要实现地图浏览控制就需要添加esri:Navigation控件,这个控件提供了放大、缩小、漫游、前一视图、后一视图等功能方法,在mx:Canvas标签前面添加如下代码:

1[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)
2[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)<esri:Navigation id="navToolbar" map="{myMap}"/>

3[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)<mx:Canvas width="446" [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)
4.首先先来引入按钮图标图片,在src目录下新建assets目录,然后放6张图片在这个文件夹里分别用于6个功能按钮,然后添加如下代码:
 1[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)<mx:Script>
 2[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)        <![CDATA[
 3[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)
 4
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            //图标图片
 5
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            [Bindable] 
 6
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            [Embed(source="assets/esriZoomIn.gif")]
 7
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            public var ZoomIn:Class; 
 8
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            
 9
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            [Bindable] 
10
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            [Embed(source="assets/esriZoomOut.gif")]
11
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            public var ZoomOut:Class; 
12
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            
13
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            [Bindable] 
14
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            [Embed(source="assets/esriPan.gif")]
15
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            public var Pan:Class; 
16
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            
17
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            [Bindable] 
18
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            [Embed(source="assets/esriBack.gif")]
19
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            public var Back:Class; 
20
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            
21
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            [Bindable] 
22
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            [Embed(source="assets/esriForward.gif")]
23
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            public var Forward:Class;
24
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            
25
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            [Bindable] 
26
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            [Embed(source="assets/esriFullExt.gif")]
27
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            public var FullExt:Class;  
28
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            
29[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)        ]]>

30[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)    </mx:Script>
5.接下啦在Map控件的上方位置添加一个mx:ToggleButtonBar控件,这个控件就是切换按钮组工具条,它可以添加子按钮然后各个子按钮点击时能进行显示等切换。具体代码如下:
 1[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)<mx:ToggleButtonBar id="toolbar1" creationComplete="initToolbar1()" itemClick="itemClickHandler(event)"  iconField="icon" horizontalCenter="-163" verticalCenter="-151">
 2[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)        <mx:dataProvider>
 3[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)        <mx:Array>
 4[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)        <mx:Object icon="{ZoomIn}" />
 5[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)        <mx:Object icon="{ZoomOut}" />
 6[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)        <mx:Object icon="{Pan}" />
 7[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)        </mx:Array>
 8[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)        </mx:dataProvider>
 9[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)        </mx:ToggleButtonBar>
10[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)    <esri:Navigation id="navToolbar" map="{myMap}"/>
11[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)
6.上面的代码中ToggleButtonBar控件绑定了一个mx:Array数据源,这个数据源包含3条数据,icon分别对于3张图标用来按钮图标的显示,这3张图片由上的script中定义,ToggleButtonBar控件定义了iconField属性就是用来显示图标,同时定义了creationComplete事件、itemClick事件,分别实现ToggleButtonBar的初始化选择以及子按钮点击功能,具体代码如下:
 1[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)//初始化toolbar1选中项为Pan
 2[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            private function initToolbar1():void
 3[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四){
 4[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                toolbar1.selectedIndex = 2
;
 5[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            }

 6[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            //ToggleButtonBar的子按钮点击事件
 7[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            private function itemClickHandler(event:ItemClickEvent):void
 8[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四){
 9[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                switch
(event.index)
10[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)
{
11[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                    case 0://选择为zoomin

12[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                    [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四){
13[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                        //**navToolbar的ZOOM_IN

14[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                        navToolbar.activate(Navigation.ZOOM_IN);
15[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                        break
;
16[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                    }

17[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                    case 1://选择为zoomout
18[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                    [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四){
19[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                        //**navToolbar的ZOOM_OUT

20[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                        navToolbar.activate(Navigation.ZOOM_OUT);
21[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                        break
;
22[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                    }

23[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                    case 2://选择为pan
24[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                    [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四){
25[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                        //**navToolbar的PAN

26[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                        //navToolbar.activate(Navigation.PAN);
27[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                        navToolbar.deactivate();
28[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                        break
;
29[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                    }

30[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                }

31[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            }

7.接下在在页面上在添加3个按钮用来显示前一视图、后一视图、全图显示,具体代码如下:

1[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)<mx:Button icon="{Back}" click="navToolbarExtent('Prev')" enabled="{!navToolbar.isFirstExtent}"  horizontalCenter="-82" verticalCenter="-151"/>
2[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)    <mx:Button icon="{Forward}" click="navToolbarExtent('Next')" enabled="{!navToolbar.isLastExtent}" horizontalCenter="-41" verticalCenter="-151"/>
3[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)    <mx:Button icon="{FullExt}" click="navToolbarExtent('Full')" horizontalCenter="0" verticalCenter="-151"/>
8.上面代码中添加了3个button,然后设置的小图标、click事件、enabled属性,enabled属性属性是针对前一视图和后一视图功能按钮了。click事件代码如下:
 1[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)private function navToolbarExtent(type:String):void
 2[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四){
 3[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                if(type=="Prev")//前一视图

 4[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四){
 5
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                    navToolbar.zoomToPrevExtent();
 6[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                }

 7[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                else if(type=="Next")//后一视图
 8[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四){
 9
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                    navToolbar.zoomToNextExtent();
10[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                }

11[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                else if(type=="Full")//
12[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)
{
13
[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                    navToolbar.zoomToFullExtent();
14[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)                }

15[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)            }
9.这样就完成了toolbar的功能,可以运行测试效果。

转载于:https://www.cnblogs.com/xranycall/archive/2010/08/18/1802600.html