<?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"> <!-- Adobe Flex SDK 4.6.0 --> <!-- ArcGIS API for Flex 3.0 15.03.2012 --> <!-- web.zone.ee/bespiva --> <s:layout> <s:VerticalLayout gap="10" paddingLeft="10" paddingBottom="10" paddingRight="10" paddingTop="10"/> </s:layout> <fx:Script> <![CDATA[ import com.esri.ags.FeatureSet; import com.esri.ags.Graphic; import com.esri.ags.events.LayerEvent; import com.esri.ags.layers.FeatureLayer; import com.esri.ags.layers.supportClasses.Field; import com.esri.ags.tasks.supportClasses.Query; import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.rpc.AsyncResponder; import mx.rpc.Fault; import mx.utils.StringUtil; import spark.components.gridClasses.GridColumn; import spark.events.GridSelectionEvent; [Bindable] private var gridSource:ArrayCollection = new ArrayCollection(); [Bindable] private var gridColumns:ArrayCollection = new ArrayCollection(); private var queryLayer:FeatureLayer = null; private function initializeLayer():void { lblMessage.text = ""; queryLayer = new FeatureLayer(txtServiceUrl.text); queryLayer.mode = FeatureLayer.MODE_ON_DEMAND; queryLayer.outFields = new Array("*"); queryLayer.addEventListener(LayerEvent.LOAD, onLayerLoaded, false, 0, true); dispatchEvent(new LayerEvent(LayerEvent.LOAD, queryLayer)); } protected function onLayerLoaded(event:LayerEvent):void { //queryLayer.removeEventListener(LayerEvent.LOAD, onLayerLoaded); //txtServiceUrl.editable = false; if (queryLayer.isEditable) { lblMessage.text = "Selected layer is editable"; } else { lblMessage.text = "Selected layer is not valid for editing"; } executeQuery(); } protected function onExecuteButtonClick(event:MouseEvent):void { if (queryLayer != null && queryLayer.loaded) { executeQuery(); } else { initializeLayer(); } } private function executeQuery():void { var query:Query = new Query(); query.where = txtWhere.text; var outs:Array = StringUtil.trim(txtOuts.text).split(","); query.outFields = queryLayer.outFields = outs; queryLayer.queryFeatures(query, new AsyncResponder(onQueryResult, onQueryFault)); } protected function onQueryResult(featureSet:FeatureSet, token:Object = null):void { gridSource = new ArrayCollection(); var doubleClickMessage:String = ""; if (queryLayer.isEditable) { doubleClickMessage = "Click to select feature."; } lblResultsCount.text = StringUtil.substitute("Found: {0} features. {1}", featureSet.features.length, doubleClickMessage); for each(var gr:Graphic in featureSet.features) { gridSource.addItem(gr.attributes); } gridSource.refresh(); gridColumns = new ArrayCollection(); for each (var field:Field in featureSet.fields) { var gridColumn:GridColumn = new GridColumn(field.name); gridColumn.headerText = field.alias; gridColumns.addItem(gridColumn); } gridColumns.refresh(); } protected function onQueryFault(fault:Fault, token:Object = null):void { trace(fault.getStackTrace()); Alert.show("Query faults.", "Error"); } protected function onGetLastResults(event:MouseEvent):void { if (gridSource) // != null { var messgae:String = StringUtil.substitute("Last results length is {0}", gridSource.length); Alert.show(messgae, "Message"); } else { Alert.show("No last results found!", "Warning"); } } protected function onGridSelectionChange(event:GridSelectionEvent):void { if (queryLayer.isEditable && queryLayer.layerDetails && gridResults.selectedItem) { var attributes:Object = gridResults.selectedItem; var oid:Number = attributes[queryLayer.layerDetails.objectIdField]; aInspector.featureLayers = [queryLayer]; var q:Query = new Query(); q.objectIds = [oid]; queryLayer.mode = FeatureLayer.MODE_SELECTION; queryLayer.selectFeatures(q); } } ]]> </fx:Script> <s:Panel width="100%" title="Query parameters"> <s:HGroup width="100%" height="100%"> <s:VGroup gap="5" paddingLeft="5" paddingTop="5" paddingRight="5" paddingBottom="5" width="100%"> <s:HGroup width="100%"> <s:Label text="Url:" width="150" /> <s:TextInput id="txtServiceUrl" width="100%" text="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/HomelandSecurity/operations/FeatureServer/2" /> </s:HGroup> <s:HGroup width="100%"> <s:Label text="Where clause:" width="150" /> <s:TextInput id="txtWhere" width="100%" text="1=1" /> </s:HGroup> <s:HGroup width="100%"> <s:Label text="Out fields (CSV):" width="150" /> <s:TextInput id="txtOuts" width="100%" text="*" /> </s:HGroup> <s:HGroup width="100%"> <s:Button label="Execute" click="onExecuteButtonClick(event)" /> <s:Button label="Last result length" click="onGetLastResults(event)" /> </s:HGroup> </s:VGroup> <s:VGroup width="100%" height="100%" gap="5" paddingLeft="5" paddingTop="5" paddingRight="5" paddingBottom="5"> <s:Label id="lblMessage" /> <esri:AttributeInspector id="aInspector" deleteButtonVisible="false" /> </s:VGroup> </s:HGroup> </s:Panel> <s:Panel title="Results" width="100%" height="100%"> <s:VGroup gap="5" paddingLeft="5" paddingTop="5" paddingRight="5" paddingBottom="5" width="100%" height="100%"> <s:Label id="lblResultsCount" /> <s:DataGrid width="100%" height="100%" id="gridResults" dataProvider="{gridSource}" columns="{gridColumns}" selectionChange="onGridSelectionChange(event)"/> </s:VGroup> </s:Panel> </s:Application>
I don't think that the Attribute Inspector will work for me.
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.