`

Arcgis for flex 地图基本操作与基本数据查询(三)

    博客分类:
  • GIS
 
阅读更多

 

环境要求:

         安装FLASH-BULID4.5 版本相对比较稳定

         Arcgis 10.0环境  需安装Arc desktop 和 Arcgis server

         需要搭建的图层的矢量数据,需要切片

一切准备就绪开始创建一个gis的RIA应用吧,

 

 

1.在FLEX-BUILD的开发环境下 新建FLEX 项目

项目名 :DEMO

点击确定后在默认包下你会看到 DEMO.mxml。这个就是应用的主入口了

 

2.导入ags-lib包见附件,包的作用的ARCGIS提供的对FLEX操作的一些借口应用

  右键工程名-- 点击属性,选择 FLEX构建路径 -- 添加SWC,选择ags-lib包点击确定。

3.DEMO.mxml

 

 

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:esri="http://www.esri.com/2008/ags"
			   xmlns:mx="library://ns.adobe.com/flex/mx"
			   xmlns:nav="com.component.*"
			   pageTitle="arcgis for flex"
			   minWidth="955" minHeight="600">
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
		
		
		<!-- Symbol for Find Result as Point -->
		<esri:SimpleMarkerSymbol id="smsFind"
								 alpha="0.9"
								 color="0xFFFF00"
								 size="11"
								 style="square">
			<esri:SimpleLineSymbol color="0x000000"/>
		</esri:SimpleMarkerSymbol>
		
		<!-- Symbol for Find Result as Polyline -->
		<esri:SimpleLineSymbol id="slsFind"
							   width="3"
							   alpha="0.9"
							   color="0xFFFF00"
							   style="solid"/>
		
		<!-- Symbol for Find Result as Polygon -->
		<esri:SimpleFillSymbol id="sfsFind"
							   alpha="0.7"
							   color="0xFFFF00"/>
		
		
		<!-- Find Task -->
		<esri:FindTask id="findTask"
					   executeComplete="findTask_executeCompleteHandler(event)"
					   url="http://localhost:8399/arcgis/rest/services/canada_new/MapServer"/>
		<!-- 查询参数:
			contains:是否接受模糊查找。 
			
			layerIds:查询图级。 
			
			searchFields:查询字段。 
			
			searchText:查询的字符串。 
			
			executeComplete:完成后触发 
		 -->
		<esri:FindParameters id="myFindParams"
							 contains="true" 
							 layerIds="[0,1,2]"
							 outSpatialReference="{geoMap.spatialReference}"
							 returnGeometry="true"
							 searchFields="[GEO_ID]"
							 searchText="{fText.text}"	 />
		
		<esri:NavigationTool id="navToolbar" map="{geoMap}"/>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
		
		
	</fx:Declarations>
	
	
	<fx:Script>
		<![CDATA[
			
			import com.esri.ags.events.MapMouseEvent;
			import com.esri.ags.geometry.MapPoint;
			import com.esri.ags.utils.WebMercatorUtil;
			import com.esri.ags.Graphic;
			import com.esri.ags.events.FindEvent;
			import com.esri.ags.events.MapMouseEvent;
			import com.esri.ags.geometry.Geometry;
			import com.esri.ags.tasks.FindTask;
			import com.esri.ags.tools.NavigationTool;
			
			import mx.events.ListEvent;
			
			private function doFind():void
			{
				findTask.execute(myFindParams);
			}
			
			protected function findTask_executeCompleteHandler(event:FindEvent):void
			{
				myGraphicsLayer.clear();
				var graphic:Graphic;
				
				resultSummary.text = "Found " + event.findResults.length + " results.";
				
				var resultCount:int = event.findResults.length;
				for (var i:Number = 0; i < resultCount; i++)
				{
					graphic = event.findResults[i].feature;
					
					event.findResults[i].displayFieldName =   event.findResults[i].feature.attributes.GEO_ID;
					event.findResults[i].layerName = event.findResults[i].feature.attributes.NAME;
					
					
					graphic.toolTip = event.findResults[i].foundFieldName + ": " + event.findResults[i].value;
					
					switch (graphic.geometry.type)
					{
						case Geometry.MAPPOINT:
						{
							graphic.symbol = smsFind;
							break;
						}
						case Geometry.POLYLINE:
						{
							graphic.symbol = slsFind;
							break;
						}
						case Geometry.POLYGON:
						{
							graphic.symbol = sfsFind;
							break;
						}
					}
					myGraphicsLayer.add(graphic);
				}

				
			}
			
			//itemList 点击事件
			protected function dataGrid_itemClickHandler(event:ListEvent):void
			{
					var a:ListEvent =  event;
			}
			
			protected function geoMap_mapClickHandler(event:MapMouseEvent):void
			{
				var latlong:MapPoint = WebMercatorUtil.webMercatorToGeographic(event.mapPoint) as MapPoint;
				geoMap.infoWindow.label = "You clicked at "
					+ event.mapPoint.x.toFixed(1) + " / " + event.mapPoint.y.toFixed(1)
					+ "\nLat/Long is: " + latlong.y.toFixed(6)
					+ " / " + latlong.x.toFixed(6);
				geoMap.infoWindow.show(event.mapPoint); // "Show the click"
			}
			
		]]>
	</fx:Script>
	

	
	

	
	
		
	
	
	
	
	
	
	
	
	<mx:VDividedBox width="100%" height="100%" >
		<s:Label id="resultSummary" height="15"/>
		<esri:Map crosshairVisible="true" id="geoMap" width="100%" height="100%"  mapClick="geoMap_mapClickHandler(event)" >
			<esri:extent>
				<esri:Extent xmin="-123.22" ymin="31.12" xmax="-67.41" ymax="58.45">
					<esri:SpatialReference wkid="4326"/>	
				</esri:Extent>
			</esri:extent>
			<esri:ArcGISTiledMapServiceLayer url="http://localhost:8399/arcgis/rest/services/canada_new/MapServer" />
			<esri:GraphicsLayer id="myGraphicsLayer"/>
		</esri:Map>
		
		<mx:DataGrid id="dataGrid" width="100%" height="40%" dataProvider="{findTask.executeLastResult}" itemClick="dataGrid_itemClickHandler(event)">
			<mx:columns>
				<mx:DataGridColumn width="200" dataField="displayFieldName" headerText="图层ID"/>
				<mx:DataGridColumn dataField="layerName" headerText="名称"/>		
			</mx:columns>
		</mx:DataGrid>
		
	</mx:VDividedBox>

	<s:HGroup y="240">
		<nav:Buttons/> <!--导航栏组件-->	
	</s:HGroup>
	
	<s:BorderContainer width="100%" height="40"
					   backgroundColor="0xDDDDFF">
		<s:layout>
			<s:HorizontalLayout horizontalAlign="center" verticalAlign="middle"/>
		</s:layout>
		<s:Label text="Search for names of States, Cities, and Rivers:"/>
		<s:TextInput id="fText"
					 enter="doFind()"
					 maxWidth="400"
					 text=""/>
		<s:Button click="doFind()" label="查询"/>
	</s:BorderContainer>
	
	
	
	
</s:Application>

 

在com.component中加入button的扩展组件ButtonControls.as

 

package com.component
{
	import com.esri.ags.Map;
	import com.esri.ags.tools.NavigationTool;
	
	import flash.events.MouseEvent;
	
	import mx.containers.DividedBox;
	import mx.controls.Alert;
	import mx.core.Application;
	import mx.core.FlexGlobals;
	import mx.events.FlexEvent;
	
	import spark.components.Button;

	public class ButtonControls extends DividedBox
	{
		
		public var fd:Button;
		public var sx:Button;
		public var yd:Button;
		public var geoMap:Map;
		
		public var navToolbar:NavigationTool;
		
		public function ButtonControls()
		{
			geoMap = FlexGlobals.topLevelApplication.geoMap;//获取全局的geoMAP
			navToolbar = FlexGlobals.topLevelApplication.navToolbar;//地图浏览控件
			super();
			addEventListener(FlexEvent.CREATION_COMPLETE,registerEvent);//构造方法,当组件构建完成之后 会执行creationCompleteHandler方法
		}
		//注册事件
		protected function registerEvent(event:FlexEvent):void{
			fd.addEventListener(MouseEvent.CLICK,function():void{
				navToolbar.activate(NavigationTool.ZOOM_IN);
			});
			
			sx.addEventListener(MouseEvent.CLICK,function():void{
				navToolbar.activate(NavigationTool.ZOOM_OUT);
			});
			
			yd.addEventListener(MouseEvent.CLICK,function():void{
				navToolbar.activate(NavigationTool.PAN);
			});
			
		}
		
	}
}
 

以及Button的布局页面 Buttons.mxml

 

<?xml version="1.0" encoding="utf-8"?>
<ss:ButtonControls xmlns:fx="http://ns.adobe.com/mxml/2009" 
		  xmlns:s="library://ns.adobe.com/flex/spark" 
		  xmlns:mx="library://ns.adobe.com/flex/mx" 
		  xmlns:ss="com.component.*">
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	
		<s:Button label="放大" id="fd">
			
		</s:Button>
		
		<s:Button label="缩小" id="sx">
			
		</s:Button>
		
		<s:Button label="移动" id="yd">
			
		</s:Button>
	
</ss:ButtonControls>
 

 

分享到:
评论

相关推荐

    ArcGIS For Flex 地图联动

    ArcGIS For Flex 基于 Adobe Flex 和 Flash Player,提供了一套完整的组件库,包括地图控件、图层管理、查询工具、空间分析等,使得开发者能够轻松构建交互式的 Web GIS 应用。其核心组件为 `esri.map.Map`,用于...

    ArcGIS for Flex的鹰眼效果

    【ArcGIS for Flex的鹰眼效果】是一种在Web应用程序中实现高级地图导航功能的技术,它允许用户在大范围的地图上快速定位和查看细节。ArcGIS是Esri公司开发的地理信息系统(GIS)软件,用于地图制作、地理数据分析和...

    arcgis for flex实现的地图卷帘效果

    1. **设置地图组件**:首先,我们需要创建一个ArcGISMapComponent实例,这是Flex中显示和操作地图的基本元素。通过设置地图服务URL,我们可以加载在线地图服务。 2. **添加图层**:在地图上添加多个图层,每个图层...

    arcgis4flex调用天地图资源

    学习和实践这个主题,你需要具备Flex编程基础,了解ArcGIS for Flex API,以及对WMTS服务的工作原理有基本认识。通过深入理解和实践,你将能够创建出具有专业地图功能的Web应用,让用户在你的平台上便捷地访问和使用...

    arcgis for flex 加载高德地图

    而高德地图是中国知名的在线地图服务商,提供了高质量的卫星图像和地图数据。 要将高德地图集成到ArcGIS for Flex应用中,首先需要理解ArcGIS的图层概念。图层是地图的基础元素,可以包含各种地理数据,如矢量图层...

    用arcgis for flex 在地图上显示柱状图 饼状图和折线图

    本教程将深入讲解如何利用ArcGIS for Flex在地图上显示柱状图、饼状图和折线图,以便于用户更直观地理解地理数据。 首先,我们需要了解ArcGIS for Flex的基本概念。ArcGIS for Flex是一个基于Adobe Flex的开发库,...

    src.rar_ARCGIS FOR FLEX API_arcgis_arcgis flex api_arcgis for fl

    《ArcGIS for Flex API 全面解析与代码实践》 ArcGIS for Flex API 是Esri公司为Flex开发者提供的一款强大的地图服务开发工具,它允许开发者在Adobe Flex环境中创建丰富的、交互式的Web GIS应用。本资源包含ArcGIS ...

    ArcGIS API for Flex应用开发

    - **特点**:集成了 ArcGIS API for Flex 的所有功能,并提供了一个易于使用的界面,便于非专业用户访问和交互地图数据。 - **应用场景**:广泛应用于企业内部系统、政府公共服务平台等领域,作为地图数据的展示和...

    ArcGIS for flex学习相关

    5. **创建Map服务**:`创建一个Map服务.doc`指导如何在ArcGIS Server上创建并发布地图服务,这是构建Flex应用的基础,因为它提供了地图数据的网络访问接口。 6. **MXML 语法**: MXML 是 Flex 中用于构建用户界面的...

    ArcGIS API for Flex library(整理)

    ### 一、ArcGIS Server 9.3 和 ArcGIS API for Flex 实现基本的地图浏览 #### 目的 - 在Flex程序中浏览由ArcGIS Server 9.3 发布的地图服务。 - 提供一个基本的入门示例。 #### 准备工作 1. **发布Map Service**:...

    arcgis for flex api 2.0 ,教程,PPT

    总的来说,ArcGIS for Flex API 2.0教程与PPT资源为开发者提供了全面的学习路径,不仅讲解了API的基本概念和操作,还提供了丰富的实例来加深理解。对于希望利用Flex技术构建GIS应用的人来说,这是一个宝贵的起点。...

    arcgis api for flex 引用天地图地图

    而将ArcGIS API for Flex与天地图相结合,则可以实现对国内地理信息数据的高效利用,为用户带来更加精准、全面的地图服务。 首先,我们来理解一下“天地图”。天地图是由国家测绘地理信息局主导建设的国家级地理...

    arcgis for flex api

    ArcGIS for Flex API则是专门为Flex开发者设计,提供了一系列接口和类库,使开发者可以访问和操作Esri的ArcGIS Server服务,包括地图服务、地理编码服务、地理处理服务等。 该离线文档是学习和参考ArcGIS for Flex ...

    flex arcgis 加载天地图2.0地图源码

    在本案例中,我们将深入探讨如何使用Flex与ArcGIS结合,加载天地图2.0的地图源码。 天地图是由中国国家测绘局主导的国家级地理信息公共服务平台,提供丰富的测绘地理信息资源,包括地图、影像、地形、地名等。天...

    arcgis for flex专题统计图包

    在ArcGIS for Flex中,我们可以创建专题地图来显示统计数据,通过图表的形式将这些数据与地理位置关联起来,使得地图更加生动和具有洞察力。 三、工具包与调用类的使用 1. 工具包(Toolkit):ArcGIS for Flex提供...

    Source code for ArcGIS Viewer for Flex 2.5

    ArcGIS Viewer for Flex 2.5是一款基于Adobe Flex技术的GIS(地理信息系统)应用框架,它允许开发者构建交互式的地图应用程序,提供丰富的地理数据可视化和分析功能。此版本的源代码开放,为开发者提供了深入学习和...

Global site tag (gtag.js) - Google Analytics