[转]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
完成后的效果图:

toolbar.jpg
开始:
1.启动Flex Builder3新建工程以及引入ArcGIS API for Flex library的开发包,这个过程前面几篇都讲过了这里就不啰嗦了。
2.新建ToolBar.mxml页面,然后在页面上添加Map控件以及设置ArcGISTiledMapServiceLayer,具体代码如下:

 

1None.gif<?xml version="1.0" encoding="utf-8"?>
2None.gif<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" backgroundColor="white" xmlns:esri="http://www.esri.com/2008/ags">
3None.gif<mx:Canvas width="446" height="300" borderStyle="solid" borderThickness="3" borderColor="#3691D1" horizontalCenter="0" verticalCenter="19">
4None.gif    <esri:Map id="myMap" width="100%" height="100%" panArrowsVisible="true" logoVisible="false" >
5None.gif        <esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer"/>
6None.gif    </esri:Map>
7None.gif</mx:Canvas>
8None.gif</mx:Application>
9None.gif

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

1None.gifdot.gif
2None.gif<esri:Navigation id="navToolbar" map="{myMap}"/>
3None.gif<mx:Canvas width="446" dot.gif
4.首先先来引入按钮图标图片,在src目录下新建assets目录,然后放6张图片在这个文件夹里分别用于6个功能按钮,然后添加如下代码:
 1None.gif<mx:Script>
 2None.gif        <![CDATA[
 3None.gif
 4None.gif            //图标图片
 5None.gif            [Bindable] 
 6None.gif            [Embed(source="assets/esriZoomIn.gif")]
 7None.gif            public var ZoomIn:Class; 
 8None.gif            
 9None.gif            [Bindable] 
10None.gif            [Embed(source="assets/esriZoomOut.gif")]
11None.gif            public var ZoomOut:Class; 
12None.gif            
13None.gif            [Bindable] 
14None.gif            [Embed(source="assets/esriPan.gif")]
15None.gif            public var Pan:Class; 
16None.gif            
17None.gif            [Bindable] 
18None.gif            [Embed(source="assets/esriBack.gif")]
19None.gif            public var Back:Class; 
20None.gif            
21None.gif            [Bindable] 
22None.gif            [Embed(source="assets/esriForward.gif")]
23None.gif            public var Forward:Class;
24None.gif            
25None.gif            [Bindable] 
26None.gif            [Embed(source="assets/esriFullExt.gif")]
27None.gif            public var FullExt:Class;  
28None.gif            
29None.gif        ]]>
30None.gif    </mx:Script>
5.接下啦在Map控件的上方位置添加一个mx:ToggleButtonBar控件,这个控件就是切换按钮组工具条,它可以添加子按钮然后各个子按钮点击时能进行显示等切换。具体代码如下:
 1None.gif<mx:ToggleButtonBar id="toolbar1" creationComplete="initToolbar1()" itemClick="itemClickHandler(event)"  iconField="icon" horizontalCenter="-163" verticalCenter="-151">
 2None.gif        <mx:dataProvider>
 3None.gif        <mx:Array>
 4None.gif        <mx:Object icon="{ZoomIn}" />
 5None.gif        <mx:Object icon="{ZoomOut}" />
 6None.gif        <mx:Object icon="{Pan}" />
 7None.gif        </mx:Array>
 8None.gif        </mx:dataProvider>
 9None.gif        </mx:ToggleButtonBar>
10None.gif    <esri:Navigation id="navToolbar" map="{myMap}"/>
11None.gifdot.gifdot.gif
6.上面的代码中ToggleButtonBar控件绑定了一个mx:Array数据源,这个数据源包含3条数据,icon分别对于3张图标用来按钮图标的显示,这3张图片由上的script中定义,ToggleButtonBar控件定义了iconField属性就是用来显示图标,同时定义了creationComplete事件、itemClick事件,分别实现ToggleButtonBar的初始化选择以及子按钮点击功能,具体代码如下:
 1None.gif//初始化toolbar1选中项为Pan
 2None.gif            private function initToolbar1():void
 3ExpandedBlockStart.gifContractedBlock.gif            dot.gif{
 4InBlock.gif                toolbar1.selectedIndex = 2;
 5ExpandedBlockEnd.gif            }

 6None.gif            //ToggleButtonBar的子按钮点击事件
 7None.gif            private function itemClickHandler(event:ItemClickEvent):void
 8ExpandedBlockStart.gifContractedBlock.gif            dot.gif{
 9InBlock.gif                switch(event.index)
10ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
11InBlock.gif                    case 0://选择为zoomin
12ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
13InBlock.gif                        //激活navToolbar的ZOOM_IN
14InBlock.gif                        navToolbar.activate(Navigation.ZOOM_IN);
15InBlock.gif                        break;
16ExpandedSubBlockEnd.gif                    }

17InBlock.gif                    case 1://选择为zoomout
18ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
19InBlock.gif                        //激活navToolbar的ZOOM_OUT
20InBlock.gif                        navToolbar.activate(Navigation.ZOOM_OUT);
21InBlock.gif                        break;
22ExpandedSubBlockEnd.gif                    }

23InBlock.gif                    case 2://选择为pan
24ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
25InBlock.gif                        //激活navToolbar的PAN
26InBlock.gif                        //navToolbar.activate(Navigation.PAN);
27InBlock.gif                        navToolbar.deactivate();
28InBlock.gif                        break;
29ExpandedSubBlockEnd.gif                    }

30ExpandedSubBlockEnd.gif                }

31ExpandedBlockEnd.gif            }

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

1None.gif<mx:Button icon="{Back}" click="navToolbarExtent('Prev')" enabled="{!navToolbar.isFirstExtent}"  horizontalCenter="-82" verticalCenter="-151"/>
2None.gif    <mx:Button icon="{Forward}" click="navToolbarExtent('Next')" enabled="{!navToolbar.isLastExtent}" horizontalCenter="-41" verticalCenter="-151"/>
3None.gif    <mx:Button icon="{FullExt}" click="navToolbarExtent('Full')" horizontalCenter="0" verticalCenter="-151"/>
8.上面代码中添加了3个button,然后设置的小图标、click事件、enabled属性,enabled属性属性是针对前一视图和后一视图功能按钮了。click事件代码如下:
 1None.gifprivate function navToolbarExtent(type:String):void
 2ExpandedBlockStart.gifContractedBlock.gif            dot.gif{
 3InBlock.gif                if(type=="Prev")//前一视图
 4ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
 5InBlock.gif                    navToolbar.zoomToPrevExtent();
 6ExpandedSubBlockEnd.gif                }

 7InBlock.gif                else if(type=="Next")//后一视图
 8ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
 9InBlock.gif                    navToolbar.zoomToNextExtent();
10ExpandedSubBlockEnd.gif                }

11InBlock.gif                else if(type=="Full")//
12ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
13InBlock.gif                    navToolbar.zoomToFullExtent();
14ExpandedSubBlockEnd.gif                }

15ExpandedBlockEnd.gif            }
9.这样就完成了toolbar的功能,可以运行测试效果。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304050.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物理学家史蒂夫·霍金逝世,享年76岁(附图文回顾他的一生)

3月14日消息&#xff0c;据英国天空新闻等多家媒体报道&#xff0c;史蒂芬威廉霍金&#xff08;Stephen William Hawking&#xff09;去世&#xff0c;享年76岁&#xff08;1942年1月8日&#xff0d;2018年3月14日&#xff09;。这一消息已经得到霍金家人确认。霍金的三个孩子露…

mysql数据库熟悉表空间数据文件_Oracle表空间和数据文件

Oracle创建表空间 1.创建普通表空间create tablespace oracle_tablespacedatafileOracle创建表空间1.创建普通表空间create tablespace oracle_tablespacedatafile /home/oracle/oradata/orcl/oracle_tablespace.dbfsize 100mautoextend on next 10M maxsize 200Mextent manage…

2018年最值得关注的15大技术趋势,区块链将得到更广泛的应用

通常情况下&#xff0c;技术趋势是很难准确预测的&#xff0c;因为预测未来本身就极其困难。但是我们还是可以从过往的一些显著数据指标来推测新的一年里科技行业的发展趋势。2018&#xff0c;有哪些值得关注的技术趋势&#xff1f;01 区块链将得到更广泛的应用

Visual Studio项目引用出现感叹号怎么办?

原因可能有多种&#xff1a;第一种问题&#xff1a;解决方式1&#xff1a;今天换了台电脑&#xff0c;就把笔记本上的项目拷贝到了台式机上&#xff0c; 但是我没有拷贝解决方案整个文件夹&#xff0c;因为其中项目太多了&#xff0c;我就把其中一个项目的文件夹直接拷贝到电脑…

离职总结:大公司与小公司的个人体验

离职在即&#xff0c;在准备下一个工作环境的这段时间&#xff0c;忽然有一阵感慨&#xff0c;工作近五年&#xff0c;在这段时间中&#xff0c;体验了两种不同的工作环境&#xff1a;一个规模很大&#xff0c;各种开发体系完备的大公司&#xff0c;另一个&#xff08;也是目前…

java导入导出excel_Java导入导出Excel工具 easyexcel

Java导入导出Excel工具 easyexcel做Java开发的同学&#xff0c;尤其是做管理后台的同学绝大多数都会接触到报表系统&#xff0c;这时候就少不了Excel的导入和导出了。Java解析生成Excel比较有名的有Apache POI &#xff0c;但是POI存在缺陷就是所有的数据的解析都是在内存中进…

浅谈.Net Core后端单元测试

1. 前言单元测试一直都是"好处大家都知道很多,但是因为种种原因没有实施起来"的一个老大难问题。具体是否应该落地单元测试&#xff0c;以及落地的程度, 每个项目都有自己的情况。本篇为个人认为"如何更好地写单元测试", 即更加偏向实践向中夹杂一些理论的…

图论的各种基本算法

本篇主要涉及到图论的基本算法&#xff0c;不包含有关最大流的内容。图论的大部分算法都是由性质或推论得出来的&#xff0c;想朴素想出来确实不容易。二分图(Is-Bipartite)一个图的所有顶点可以划分成两个子集&#xff0c;使所有的边的入度和出度顶点分别在这两个子集中。这个…

社区 正式发布了跨平台的 CoreWCF 0.1.0 GA

CoreWCF 项目在2021.2.19 正式发布了0.1.0 GA版本:https://github.com/CoreWCF/CoreWCF/releases/tag/v0.1.0 &#xff0c;这个版本号虽然是0.1&#xff0c;但是它是可以投入生产的版本&#xff0c;而且是跨平台的&#xff0c;支持LInux部署WCF&#xff0c;当前仅支持http 和 n…

Prim 算法及其高效实现

转自&#xff1a;ivy-endhttp://www.ivy-end.com/archives/943背景最小生成树&#xff08;Minimum Spanning Trees&#xff09;&#xff0c;简称MST。是图论中一个非常重要的概念。解决这个问题有两种算法&#xff0c;今天暂且先来讨论一下Prim Algorithm。不做特别说明&#x…

Silverlight实例教程 - Validation数据验证开篇

说起来Validation验证功能&#xff0c;相信大家都不陌生&#xff0c;在应用中&#xff0c;当需要用户交互输入时&#xff0c;开发人员都会加入一些验证代码&#xff0c;这样可以有效的避免应用异常出现&#xff0c;也可以使应用的错误提示信息清晰明了的显示在客户端&#xff0…

一日一技:微信扫码用户帐号绑定

概述最近在整一个微信扫码用户帐号绑定功能。为了满足用户帐号绑定场景的需要&#xff0c;通过生成用户自己的二维码&#xff0c;用户扫描后&#xff0c;公众号可以接收到事件推送。如下1、用户登录扫码2、绑定成功实现思路扫码绑定账户&#xff0c;其实就是扫描带有用户信息的…

计算机起源的数学思想

人类的历史可以看做一部关于解放的历史。也有这样的说法&#xff0c;懒惰是人类进步的动力。为了偷懒&#xff0c;人类不断的做着各种努力&#xff0c;发明了各种机器工具&#xff0c;将自己从繁重的劳动解放出来&#xff0c;另一方面&#xff0c;每一次大的进步&#xff0c;都…

Redis 通过 RDB 方式进行数据备份与还原

Redis 通过 RDB 方式进行数据备份与还原Intro有的时候我们需要对 Redis 的数据进行迁移&#xff0c;今天介绍一下通过 RDB&#xff08;快照&#xff09;文件进行 Redis 数据的备份和还原Redis 持久化Redis 的数据持久化有两种机制&#xff0c;一种是 RDB(Redis Database)&#…

java proguard 使用_一步步教你使用Proguard混淆Java源代码

ava代码很容易被反编译&#xff0c;以下使用proguard来保护我们的代码proguard选项很多&#xff0c;容易迷糊&#xff0c;现在就把我的配置写下来(实际使用中)&#xff0c;以供参考2.准备好你的jar包&#xff0c;我在这里举例叫做test.jar。3.解压proguard&#xff0c;执行 bin…

稳定匹配问题——稳定婚姻算法设计

图片源自&#xff1a;美剧《How I met your mother》****本代码带有详细的注释&#xff0c;并在控制台输出时详细地说明了算法的过程&#xff0c;非常有助于新手理解稳定匹配问题和稳定婚姻算法的设计思路。****#include <iostream>using namespace std;bool finish_or_n…

如果诸葛亮用C#写出师表...

❝看到一篇18年的文章 "C版《出师表》"&#xff0c;站长觉得挺有意思的&#xff0c;就用C# 控制台也实现了一遍&#xff0c;技术上没啥难度&#xff0c;但复制代码费了1、2个小时&#xff0c;纯粹无聊写着玩&#xff0c;看者别在意枚举、类名、变量中文命名&#xff…

这16个数据可视化案例,惊艳了全球数据行业

数据可视化可以帮你更容易的解释趋势和统计数据。数据是非常强大的。当然&#xff0c;如果你能真正理解它想告诉你的内容&#xff0c;那它的强大之处就更能体现出来了。通过观察数字和统计数据的转换以获得清晰的结论并不是一件容易的事。必须用一个合乎逻辑的、易于理解的方式…

asp.net core 自定义 Content-Type

asp.net core 实现支持自定义 Content-TypeIntro我们最近有一个原本是内网的服务要上公网&#xff0c;在公网上有一层 Cloudflare 作为网站的公网流量提供者&#xff0c;CloudFlare 会有一层防火墙拦截掉一些非法的请求&#xff0c;我们有一些 API 会提交一些 html 内容&#x…

如何优雅的移植JavaScript组件到Blazor

Blazor作为一个新兴的交互式 Web UI 的框架&#xff0c;有其自身的优缺点&#xff0c;如果现有的 JavaScript 组件能移植到 Blazor&#xff0c;无疑让 Blazor 如虎添翼&#xff0c;本文就介绍一下自己在开发 BulmaRazor 组件库的时&#xff0c;封装现有的 JavaScript 组件的方法…