將面生成經緯度數組並讀取顯示(Arcgis版)

下面是源代碼

<?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:supportClasses="com.esri.ags.skins.supportClasses.*"
			   width="100%"
			   height="100%"
			   xmlns:esri="http://www.esri.com/2008/ags">
	<s:layout>
		<supportClasses:AttachmentLayout/>
	</s:layout>

	<fx:Declarations>
		<!-- 將非可視元素(例如服務、值對象)放在此處 -->
		<esri:SimpleFillSymbol id="sym"
							   alpha="0.7"
							   color="0x009933"/>
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import com.esri.ags.FeatureSet;
			import com.esri.ags.Graphic;
			import com.esri.ags.SpatialReference;
			import com.esri.ags.geometry.MapPoint;
			import com.esri.ags.geometry.Polygon;
			import com.esri.ags.geometry.Polyline;
			import com.esri.ags.layers.GraphicsLayer;
			import com.esri.ags.symbols.PictureMarkerSymbol;
			import com.esri.ags.symbols.Symbol;
			import com.esri.ags.tasks.QueryTask;
			import com.esri.ags.tasks.supportClasses.Query;

			import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			import mx.rpc.AsyncResponder;
			[Bindable]
			private var AC:ArrayCollection=new ArrayCollection();

			private function getxy():void
			{
				var query:Query=new Query(); //定義新的查詢
				query.where="PNAME IS NOT NULL"; //這裏是查詢條件
				var queryTask:QueryTask=new QueryTask("http://192.168.1.200:6080/arcgis/rest/services/CLfb/MapServer/2"); //定義查詢實時信息的任務
				query.returnGeometry=true;
				query.spatialRelationship="esriSpatialRelIntersects";
				query.outSpatialReference=new SpatialReference(102113); //這裏定義投影系統
				query.outFields=['PNAME']; //查詢字體
				queryTask.useAMF=false;
				queryTask.execute(query, new AsyncResponder(OnR, OnF));

				function OnR(featureSet:FeatureSet, token:Object=null):void
				{
					var i:int=0;
					var txtXY:String="";
					//----------------寫入過程---------------
					for each (var gra:Graphic in featureSet.features)
					{
						AC=new ArrayCollection();
						var po:Polygon=gra.geometry as Polygon;
						var z:int=0;
						txtXY="";
						for (z=0; z < po.rings.length; z++)
						{
							var pArr:Array=po.rings[z];
							for (var k:int=0; k < pArr.length; k++)
							{
								var p:MapPoint=pArr[k] as MapPoint;
								var o:Object=new Object();
								o.x=p.x;
								o.y=p.y;
								txtXY+=p.x + "," + p.y + ";";
							}
							txtXY+="/";

						}
						xylabel.text=xylabel.text + txtXY;
						lb.text=i / featureSet.features.length * 100 + "%";
						i++;
					}
					ok.text="成功"
					//----------------寫入過程---------------
				}

				function OnF(info:Object, token:Object=null):void
				{
					ok.text="失敗";
				}
			}

			private function getSym(i:int):SimpleFillSymbol
			{
				var sym:SimpleFillSymbol=new SimpleFillSymbol();
				sym.alpha=0.7;
				switch (i)
				{
					case 0:
					{
						sym.color=0x009933;
						break;
					}
					case 1:
					{
						sym.color=0x0033DD;
						break;
					}
					case 2:
					{
						sym.color=0xddb100;
						break;
					}
					case 3:
					{
						sym.color=0xdd4400;
						break;
					}
					case 4:
					{
						sym.color=0x00dd1a;
						break;
					}
					case 5:
					{
						sym.color=0xdd0068;
						break;
					}
					default:
					{
						sym.color=0x009939;
						break;
					}
				}
				return sym;
			}

			protected function button1_clickHandler(event:MouseEvent):void
			{
				var arr:Array=xylabel.text.split("/"); //開始解析座標點
				var pl:Polygon;
				var arrP:Array;
				var centerP:MapPoint;
				var sp:SpatialReference=new SpatialReference(102113);
				var arrPALL:Array;

				for (var n:int=0; n < arr.length; n++)
				{
					arrPALL=new Array();
					if (arr[n] != null && arr[n] != "")
					{
						arrP=new Array();
						var arr2:Array=arr[n].toString().split(";");
						for (var k:int=0; k < arr2.length; k++) //分別讀取座標組
						{
							if (arr2[k] != null && arr2[k] != null)
							{
								var arr3:Array=arr2[k].toString().split(",");
								if (arr3[0] != null && arr3[0] != "" && arr3[1] != null && arr3[1] != "")
								{
									var _Point:MapPoint=new MapPoint(Number(arr3[0]), Number(arr3[1]), sp);
									centerP=new MapPoint(Number(arr3[0]), Number(arr3[1]), sp);
									arrP.push(_Point); //存放座標組
								}
							}
						}
						arrPALL.push(arrP);
					}
					pl=new Polygon(arrPALL, sp);
					var g:Graphic=new Graphic(pl, getSym(n));
					gl.add(g);
				}
			}
		]]>
	</fx:Script>
	<s:HGroup width="100%"
			  height="100%">
		<s:VGroup width="100%"
				  height="100%">
			<s:Label text="這個頁面生成xy數組"/>
			<s:TextArea id="xylabel"
						width="624"
						height="422"/>
			<s:Label id="lb"/>
			<mx:Text id="ok"/>
			<s:Button label="生成XY"
					  click="getxy()"/>
		</s:VGroup>
		<s:VGroup width="100%"
				  height="100%">
			<esri:Map id="map"
					  height="508"
					  width="638">
				<esri:ArcGISDynamicMapServiceLayer url="http://192.168.1.200:6080/arcgis/rest/services/CLfb/MapServer"/>
				<esri:GraphicsLayer id="gl"/>
			</esri:Map>
			<s:Button label="加載"
					  click="button1_clickHandler(event)"/>
		</s:VGroup>
	</s:HGroup>
</s:Application>


發佈了65 篇原創文章 · 獲贊 24 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章