<?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);
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.