基于ArcGIS API for Flex的区域性助老助残地图服务

原创 2013年12月04日 13:00:04
<?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:mx="library://ns.adobe.com/flex/mx"
			   xmlns:esri="http://www.esri.com/2008/ags"
			   xmlns:utils="utils.*"
			   xmlns:local="*"
			   pageTitle="助老助残室内位置服务"
			   minWidth="955" minHeight="600">
	<fx:Script>
		<![CDATA[
			import com.esri.ags.Graphic;
			import com.esri.ags.events.MapEvent;
			import com.esri.ags.events.MapMouseEvent;
			import com.esri.ags.geometry.MapPoint;
			import com.esri.ags.tasks.supportClasses.IdentifyParameters;
			import com.esri.ags.tasks.supportClasses.IdentifyResult;
			import mx.controls.Alert;
			import mx.rpc.AsyncResponder;
			import mx.rpc.events.FaultEvent;
			protected function pMap_mouseMoveHandler(event:MouseEvent):void
			{
				// TODO Auto-generated method stub
				const mapPoint:MapPoint = map2d.toMapFromStage(event.stageX,event.stageY);
				mapCoordinate.text = mapPoint.x.toFixed(1)+","+mapPoint.y.toFixed(1);
			}
			protected function pMap_loadHandler(event:MapEvent):void
			{
				// TODO Auto-generated method stub
				var timer:Timer = new Timer(1000);
				timer.addEventListener(TimerEvent.TIMER,onTimer);
				timer.start();
				var mapTimer:Timer = new Timer(10000);
				mapTimer.addEventListener(TimerEvent.TIMER,mapRefresh);
				mapTimer.start();
				map2d.infoWindow.addEventListener(Event.CLOSE,pMap_infoWindow_CloseHandler);
			}
			private function onTimer(event:TimerEvent):void{
				var date:Date = new Date();
				//txtDate.text = date.toString();
				txtDate.text = dateFormatter.format(date);
			}
			private function mapRefresh(event:TimerEvent):void{
				if(baseLayer!=null)
				{
					peopleLayer.refresh();
					peopleAlarmLayer.refresh();
					baseLayer.refresh();
					//watchLayer.refresh();
					//Alert.show("");
				}
			}
			protected function pMap_mapClickHandler(event:MapMouseEvent):void
			{
				//Alert.show(map2d.scale.toString());
				var identifyParams:IdentifyParameters = new IdentifyParameters();
				identifyParams.layerOption = IdentifyParameters.LAYER_OPTION_VISIBLE;
				identifyParams.layerIds = [0,1];
				identifyParams.returnGeometry = true;
				identifyParams.tolerance = 5;
				identifyParams.width = map2d.width;
				identifyParams.height = map2d.height;
				identifyParams.mapExtent = map2d.extent;
				identifyParams.spatialReference = map2d.spatialReference;
				identifyParams.geometry = event.mapPoint;
				identifyTask.execute(identifyParams,new AsyncResponder(result_identityTask,fault_identityTask));
				
				function result_identityTask(results:Array,token:Object = null):void
				{
					highlightGraphicsLayer.clear();
					var count:int = results.length;
					if(results && count>0){
						var infoPoint:MapPoint = results[0].feature.geometry;
						for(var i:int = 0;i<count;i++){
							var result:IdentifyResult = results[i];
							var pGraphic:Graphic = result.feature;
							pMap_infoWindow_setContentHandler(pGraphic); // 设定信息窗口的显示字段
							highlightGraphicsLayer.add(new Graphic(result.feature.geometry,onSelectionMarker));
							break;
						}
						map2d.infoWindow.show(infoPoint);
					} else {
					}
				}
				function pMap_infoWindow_setContentHandler(graphic:Graphic):void{
					infoWindow.PID = graphic.attributes.PID;
					infoWindow.Name = graphic.attributes.Name;
					infoWindow.Gender = graphic.attributes.Gender;
					infoWindow.Age = graphic.attributes.Age;
					infoWindow.RoomNumber = graphic.attributes.RoomNumber;
				}
				function fault_identityTask(error:Object,token:Object = null):void{
					Alert.show(String(error),"Identity Error");
				}
			}
			private function pMap_infoWindow_CloseHandler(event:Event):void{
				highlightGraphicsLayer.clear();
			}
			protected function peopleLayer_faultHandler(event:FaultEvent):void
			{
				// TODO Auto-generated method stub
				peopleLayer.visible = false;
				Alert.show(event.fault.faultString + "\n\n" + event.fault.faultDetail, "FeatureLayer error " + event.fault.faultCode);
			}
		]]>
	</fx:Script>
		<fx:Style>
		@namespace s "library://ns.adobe.com/flex/spark";
		@namespace mx "library://ns.adobe.com/flex/mx";
		@namespace esri "http://www.esri.com/2008/ags";
		@namespace utils "utils.*";
		@namespace local "*";
		esri|InfoWindow{
			backgroundAlpha: 0.8;
			backgroundColor: #E9FFBE;
			borderThickness: 0;
			infoPlacement: top;
			shadowAlpha: 0.5;
			shadowDistance: 10;
			upperRightRadius: 0;
		}
	</fx:Style>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
		<esri:SpatialReference id="mapSR"
							   wkid="2385" />
		<esri:Extent id="initExtent"
					 xmin="899275"
					 ymin="-170770" 
					 xmax="931980"
					 ymax="-138070"
					 spatialReference="{mapSR}" />
		<esri:IdentifyTask id="identifyTask"
						   concurrency="last"
						   showBusyCursor="true"
						   url="http://192.168.11.90:6080/arcgis/rest/services/Indoor/F20/MapServer" />
		<esri:SimpleMarkerSymbol id="onSelectionMarker"
								 size="10"
								 color="0xB0FFFF"
								 alpha="20" />
		<s:DateTimeFormatter id="dateFormatter"
							 useUTC="false"
							 dateTimePattern="YY-MM-DD h:mm:ss"
							 locale="zh-CN"
							 timeStyle="long" />
		<esri:InfoSymbol id="peopleInfoAlarmSymbol">
			<esri:infoRenderer>
				<fx:Component>
					<s:DataRenderer color="0xBEFFE8">
						<s:Label fontSize="12"
								 fontWeight="bold"
								 paddingBottom="3"
								 paddingLeft="3"
								 paddingRight="3"
								 paddingTop="3"
								 fontFamily="微软雅黑"
								 backgroundColor="0xBEFFE8"
								 color="0xFF5500"
								 text="{data.name}离开!" />
					</s:DataRenderer>
				</fx:Component>
			</esri:infoRenderer>
		</esri:InfoSymbol>
		<esri:InfoSymbol id="peopleInfoSymbol">
			<esri:infoRenderer>
				<fx:Component>
					<s:DataRenderer color="0xBEFFE8">
						<s:Label fontSize="12"
								 fontWeight="bold"
								 paddingBottom="3"
								 paddingLeft="3"
								 paddingRight="3"
								 paddingTop="3"
								 fontFamily="微软雅黑"
								 backgroundColor="0xBEFFE8"
								 color="0xFF5500"
								 text="{data.name}" />
					</s:DataRenderer>
				</fx:Component>
			</esri:infoRenderer>
		</esri:InfoSymbol>
	</fx:Declarations>
	<s:layout>
		<s:VerticalLayout />
	</s:layout>
	<esri:Map id="map2d"
			  logoVisible="false"
			  scaleBarVisible="false"
			  zoomSliderVisible="false"
			  width="100%"
			  height="100%"
			  extent="{initExtent}" 
			  scrollWheelZoomEnabled="false"
			  rubberbandZoomEnabled="false"
			  doubleClickZoomEnabled="false"
			  clickRecenterEnabled="false"
			  panEnabled="true"
			  keyboardNavigationEnabled="false"
			  mouseMove="pMap_mouseMoveHandler(event)"
			  mapClick="pMap_mapClickHandler(event)"
			  load="pMap_loadHandler(event)">
		<esri:ArcGISDynamicMapServiceLayer id="baseLayer"
										 url = "http://192.168.11.90:6080/arcgis/rest/services/Indoor/F20/MapServer" />
		<esri:FeatureLayer id="peopleAlarmLayer"
						   mode="onDemand"
						   outFields="[*]"
						   fault="peopleLayer_faultHandler(event)"
						   visible="true"
						   disableClientCaching="true"
						   symbol="{peopleInfoAlarmSymbol}"
						   url="http://192.168.11.90:6080/arcgis/rest/services/Indoor/F20/MapServer/1" /> <!-- OPM 报警位置 -->
		<esri:FeatureLayer id="peopleLayer"
						   mode="onDemand"
						   outFields="[*]"
						   fault="peopleLayer_faultHandler(event)"
						   visible="true"
						   disableClientCaching="true"
						   symbol="{peopleInfoSymbol}"
						   url="http://192.168.11.90:6080/arcgis/rest/services/Indoor/F20/MapServer/0" /> <!-- OPM 正常位置 -->
		<esri:GraphicsLayer id="highlightGraphicsLayer" />
		<esri:infoWindowContent>
			<utils:InfoWindow id="infoWindow" />
		</esri:infoWindowContent>
	</esri:Map>
	<s:Group>
		<s:layout>
			<s:HorizontalLayout />
		</s:layout>
		<s:RichText id="mapCoordinate"
					text="显示地图坐标"  />
		<s:RichText id="txtDate"
					text="显示时间"  />
	</s:Group>
</s:Application>

第一个项目顺利验收通过。

ArcGIS Flex API 调用天地图和Google地图服务

Esri为我们提供了TiledMapServiceLayer类,这个类正是所有瓦片地图服务都必须继承的类,像ArcGISTiledMapServiceLayer, OpenStreetMapLayer...
  • lxping1012
  • lxping1012
  • 2012年04月12日 15:46
  • 9962

ArcGIS API For Flex(在应用程序中添加web地图)

Add the web map to the application 原文摘录:https://developers.arcgis.com/flex/guide/tutorial-add-a-web-...
  • xiaokui_wingfly
  • xiaokui_wingfly
  • 2014年08月29日 12:38
  • 1500

ArcGIS API for Flex(三) 地图之间的切换

最近在学习flex,因为我的专业就是GIS(地理信息系统),所以就尝试着从ESRI上学习相关的知识,有不足之处请多多关照 下面是我直接调用ArcGIS的API,功能是地图之间的切换,运行效果图如下...
  • vector5210
  • vector5210
  • 2014年10月24日 18:10
  • 929

ArcGIS API For Flex(设置地图空间范围)

引用地址:https://developers.arcgis.com/flex/guide/using-extent.htm  本教程描述几种方式设置地图的范围以及如何取得用于其他操作程度。 Set...
  • xiaokui_wingfly
  • xiaokui_wingfly
  • 2014年09月01日 17:49
  • 1894

基于javascript访问自己发布的简单地图服务

http://serverapi.arcgisonline.com/jsapi/arcgis/3.4/js/esri/css/esri.css"> http://serverapi.arcgisonl...
  • ldldong
  • ldldong
  • 2014年03月03日 23:53
  • 1314

(九)ArcGIS API For Javascript调用结果地图服务

引言 ArcGIS API调用结果地图服务 1代码实现 2 全部代码 1.引言结果地图服务也是GP服务的一种,当GP服务的结果返回栅格数据时,我们往往使用结果地图服务来对生成的栅格数据进行渲染,如何发...
  • LoveCarpenter
  • LoveCarpenter
  • 2016年10月01日 09:49
  • 5295

arcgis flex api 由于沙箱安全的原因 无法显示地图 的解决办法

在使用arcgis flex api做地图的时候,调用自己本机的地图服务。代码如下
  • remote_roamer
  • remote_roamer
  • 2011年05月12日 14:11
  • 4042

(三)ArcGIS API For Javascript之调用动态地图服务

引言 调用动态地图服务 需求 1根据需求隐藏服务中的某一个图层 11代码解释 2通过属性查询地图服务中的信息 21代码实现 22代码解释 3通过空间查询地图服务中的信息 31代码实现 32代码解释 4...
  • LoveCarpenter
  • LoveCarpenter
  • 2016年09月06日 21:23
  • 16435

ArcGIS flex API 使用样例

http://ns.adobe.com/mxml/2009"       xmlns:s="library://ns.adobe.com/flex/spark"       xmlns:la...
  • huyanliang
  • huyanliang
  • 2014年06月30日 10:58
  • 3408

arcgis api for flex 中文教程

人就是有时候会觉着蛋疼,尤其是搞IT的。沉不住气,今天看点这个,明天看点别的。那翻译这个教程也是想对自己有个耐心的训练,并且也能学习一下,代替了一部分划拉朋友圈的时间。虽然谈不上是高深的东西,但中文对...
  • xiliangxiaoke
  • xiliangxiaoke
  • 2015年04月17日 11:43
  • 2540
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于ArcGIS API for Flex的区域性助老助残地图服务
举报原因:
原因补充:

(最多只允许输入30个字)