<?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.
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registriere ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.