<?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" backgroundColor="0x9c9c9c"> <!-- Adobe Flex SDK 4.6.0 --> <!-- ArcGIS API for Flex 3.0 prerelease 15.03.2012 --> <!-- web.zone.ee/bespiva/layerwithoutmap --> <s:layout> <s:VerticalLayout gap="10" paddingLeft="10" paddingRight="10" paddingTop="10" paddingBottom="10" /> </s:layout> <s:Label text="Load layer:" /> <s:HGroup width="100%"> <s:TextInput id="txtUrl" width="100%" text="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Fire/Sheep/MapServer/0" /> <s:Button label="Load" click="onLoadButtonClick(event)" /> </s:HGroup> <s:Label text="Query results table:" /> <s:VGroup width="100%" height="50%"> <s:DataGrid width="100%" height="100%" dataProvider="{gridProvider}" /> </s:VGroup> <s:Label text="Logs:" /> <s:VGroup width="100%" height="100%"> <s:TextArea width="100%" height="100%" id="log" /> </s:VGroup> <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.tasks.supportClasses.Query; import mx.collections.ArrayCollection; import mx.rpc.AsyncResponder; import mx.rpc.Fault; import mx.utils.StringUtil; [Bindable] private var gridProvider:ArrayCollection = new ArrayCollection(); private var activeLayer:FeatureLayer = null; private function addLog(message:String):void { log.text = StringUtil.substitute("{0}\n\n{1}", message, log.text); } protected function onLoadButtonClick(event:MouseEvent):void { addLog("onLoadButtonClick()"); if (txtUrl.text.length > 0) { initLayer(txtUrl.text); } else { addLog("Layer url is empty. Enter valid layer url."); } } private function initLayer(url:String):void { addLog("initLayer()"); if (activeLayer) { gridProvider = null; activeLayer.removeEventListener(LayerEvent.LOAD, onLayerLoad); activeLayer.removeEventListener(LayerEvent.LOAD_ERROR, onLayerLoadError); } activeLayer = new FeatureLayer(url); activeLayer.mode = FeatureLayer.MODE_SNAPSHOT; activeLayer.outFields = new Array("*"); // all activeLayer.addEventListener(LayerEvent.LOAD, onLayerLoad, false, 0, true); activeLayer.addEventListener(LayerEvent.LOAD_ERROR, onLayerLoadError, false, 0, true); dispatchEvent(new LayerEvent(LayerEvent.LOAD, activeLayer)); } protected function onLayerLoad(event:LayerEvent):void { addLog("onLayerLoad()"); queryFeatures(); } protected function onLayerLoadError(event:LayerEvent):void { addLog("onLayerLoadError()"); } private function queryFeatures():void { addLog("queryFeatures()"); if (activeLayer) { var query:Query = new Query(); query.returnGeometry = false; query.where = "1=1"; // all activeLayer.queryFeatures(query, new AsyncResponder(onQueryResult, ouQueryFault, activeLayer)); } } protected function onQueryResult(featuresSet:FeatureSet, token:Object = null):void { addLog("onQueryResult()"); var queryLayer:FeatureLayer = activeLayer as FeatureLayer; if (activeLayer != queryLayer) { return; } gridProvider = new ArrayCollection(); for each (var gr:Graphic in featuresSet.features) { gridProvider.addItem(gr.attributes); } } protected function ouQueryFault(fault:Fault, token:Object = null):void { addLog(StringUtil.substitute("ouQueryFault()\n{0}", fault.message.toString())); } ]]> </fx:Script> </s:Application>
but I want to do this without adding another layer to the map.
var layer:Layer = map.getLayer("Metadata"); var myfLayer:FeatureLayer = new FeatureLayer(layer.url + "/0"); myfLayer.id = "MetadataFeatureLayer"; myfLayer.addEventListener(GraphicEvent.GRAPHIC_ADD,fLayer_graphicAddHandler); // add layer/table load event listener myfLayer.addEventListener(LayerEvent.LOAD, onLayerLoad, false, 0, true); dispatchEvent(new LayerEvent(LayerEvent.LOAD, myfLayer)); // the code you looked for // map.addLayer(myfLayer); ... /* * Listen layer load handler */ protected function onLayerLoad(event:LayerEvent):void { // now you can work with loaded layer/table }
var myfLayer:FeatureLayer = map.getLayer(DynamicMapServiceLayerID) as FeatureLayer;
var myfLayer:FeatureLayer = map.getLayer(DynamicMapServiceLayerID)[0] as FeatureLayer;
map.getLayer(DynamicMapServiceLayerID).url + "/0"
var layer:Layer = map.getLayer("Metadata"); var myfLayer:FeatureLayer = new FeatureLayer(layer.url + "/0"); myfLayer.id = "MetadataFeatureLayer"; myfLayer.addEventListener(GraphicEvent.GRAPHIC_ADD,fLayer_graphicAddHandler); map.addLayer(myfLayer);
Membros conectados podem postar, seguir atualizações e mais. Novo aqui? Registre uma conta gratuita.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.