`

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 API for Flex library

    ArcGIS API for Flex实现在Flex程序中浏览自己的ArcGIS.Server.9.3中发布的地图,一个最基本的入门例子。 目錄 一、ArcGIS.Server.9.3和ArcGIS API for Flex实现基本的地图浏览(一).................................

    ArcGIS API for Flex library(整理)

    ArcGIS API for Flex实现在Flex程序中浏览自己的ArcGIS.Server.9.3中发布的地图,一个最基本的入门例子。 目錄 一、ArcGIS.Server.9.3和ArcGIS API for Flex实现基本的地图浏览(一).................................

    arcgis for flex全国地图天气预报的具体实现过程解析

    系统架构是B/S,开发语言是flex,开发工具是myeclise... 采用地图是ArcGIS全国地图,开发接口为arcgis api for flex,但是程序可以拓展api 接口,可以采用其他GIS api,地图数据也可以更换其他地图数据,拓展性比较好。

    基于Flex的ArcGIS开发经典例子说明文档

    (一)ArcGIS.Server.9.3和ArcGIS API for Flex实现基本的地图浏览 1 (二)ArcGIS.Server.9.3和ArcGIS API for Flex实现动态图层和瓦片图层叠加显示 5 (三)ArcGIS.Server.9.3和ArcGIS API for Flex实现自己的Toc...

    arcgis api for flex 3.3

    ArcGIS API for Flex用于富互联网应用程序RIA(Rich Internet Applications)的开发,通过ArcGIS API for Flex可以将ArcGIS Server提供的地图资源和其它资源(ArcGIS Online)嵌入到Web应用中。 使用它可以做什么: ...

    arcgis api for flex

    ArcGIS API for Flex 是一个强大的框架,利用它可以基于ArcGIS Server建立漂亮的富互联网应用程序 rich internet applications (RIAs) ,优点是运行速度快,用户体验效果会比目前的WEBGIS好。 ESRI的 Flex 资源中心...

    Flex\WebGIS经典例子

    (一)ArcGIS.Server.9.3和ArcGIS API for Flex实现基本的地图浏览 (二)ArcGIS.Server.9.3和ArcGIS API for Flex实现动态图层和瓦片图层叠加显示 (三)ArcGIS.Server.9.3和ArcGIS API for Flex实现自己的Toc...

    arcgis api for flex教程

    使用 arcgis api for flex 可以达到下面的效果 1,显示你的地图数据并可以和数据交互 2,在服务器上执行空间处理模型并显示结果 3,基于ArcGIS Online 上的底图显示你自己的数据 4,根据属性或者位置查找你的数据并...

    arcgis_api_for_flex_1_1

    ArcGIS API for Flex 是一个强大的框架,利用它可以基于ArcGIS Server建立漂亮的富互联网应用程序 rich internet applications (RIAs) ,优点是运行速度快,用户体验效果会比目前的WEBGIS好。 ESRI的 Flex 资源中心...

    太乐地图下载器V4.6破解+步骤

    供ArcGIS、SuperMap、Openlayers等客户端直接远程访问,支持Openlayers/ArcGIS API For Javascript/Flex等多款GIS客户端离线浏览,同时支持发布TPK,发布ArcGIS缓存为WMTS地图,助您轻松构建自己的局域网离线地图...

    太乐地图下载器v5.0.5(16年最新)

    支持将下载的地图发布为WMTS/ArcGIS REST/TMS/Google标准服务,支持Openlayers/ArcGIS API For Javascript/Flex等多款GIS客户端离线浏览 ④支持众多易用GIS功能 BS/CS/Mobile离线访问、离线站点自动构建、国家...

    太乐地图下载器V5.2.7全数据全功能版本(2018最新)

    1、支持多种类地图数据下载 街道、卫片、航片、地形、海图、大字体地图、三维地图、夜间地图等等上百款地图下载 GoogleEarth高程下载(精度最高30米,可自动插值下载5米、10米、20米等更高精度,高程可生成等高线、...

    太乐地图下载器V5.0.2

    支持将下载的地图发布为WMTS/ArcGIS REST/TMS/Google标准服务,支持Openlayers/ArcGIS API For Javascript/Flex等多款GIS客户端离线浏览 ④支持众多易用GIS功能 BS/CS/Mobile离线访问、离线站点自动构建、国家...

    太乐地图下载器V5.3.6(2019全地图全功能).rar

    1、支持多种类地图数据下载 街道、卫片、航片、地形、海图、大字体地图、三维地图、夜间地图等等上百款地图下载 GoogleEarth高程下载(精度最高30米,可自动插值下载5米、10米、20米等更高精度,高程可生成等高线、...

    太乐地图下载

    支持将下载的地图发布为WMTS/ArcGIS REST/TMS/Google标准服务,支持Openlayers/ArcGIS API For Javascript/Flex等多款GIS客户端离线浏览 ④支持众多易用GIS功能 BS/CS/Mobile离线访问、离线站点自动构建、国家基本...

    “天地图·甘肃”在地质灾害应急中的应用初探

    文中首先介绍"天地图"、"天地图·甘肃"服务资源,分析其GIS服务模式,研究基于ArcGIS API For Flex接口调用"天地图"、"天地图·甘肃"地图服务的关键技术,实现了地质灾害专题数据与"天地图·甘肃"地图服务的聚合与集成,...

Global site tag (gtag.js) - Google Analytics