<?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 prerelease 15.03.2012 --> <!-- web.zone.ee/bespiva/layerevents --> <s:layout> <s:VerticalLayout paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10" gap="10" /> </s:layout> <esri:Map id="map"> <esri:extent> <esri:WebMercatorExtent id="lowerManhatten" minlon="-74.03" minlat="40.70" maxlon="-73.99" maxlat="40.72"/> </esri:extent> <esri:ArcGISTiledMapServiceLayer name="Base Layer" url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" load="onLayerLoad(event)" loadError="onLayerLoadError(event)" updateStart="onLayerUpdateStart(event)" updateEnd="onLayerUpdateEnd(event)"/> <esri:ArcGISDynamicMapServiceLayer name="Census Block Points" url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/" visibleLayers="{new ArrayCollection([0])}" load="onLayerLoad(event)" loadError="onLayerLoadError(event)" updateStart="onLayerUpdateStart(event)" updateEnd="onLayerUpdateEnd(event)"/> <esri:ArcGISDynamicMapServiceLayer name="Census Block Group" url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/" visibleLayers="{new ArrayCollection([1])}" load="onLayerLoad(event)" loadError="onLayerLoadError(event)" updateStart="onLayerUpdateStart(event)" updateEnd="onLayerUpdateEnd(event)"/> <esri:ArcGISDynamicMapServiceLayer name="Coarse Counties" url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/" visibleLayers="{new ArrayCollection([3])}" load="onLayerLoad(event)" loadError="onLayerLoadError(event)" updateStart="onLayerUpdateStart(event)" updateEnd="onLayerUpdateEnd(event)"/> <esri:ArcGISDynamicMapServiceLayer name="Detailed Counties" url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/" visibleLayers="{new ArrayCollection([4])}" load="onLayerLoad(event)" loadError="onLayerLoadError(event)" updateStart="onLayerUpdateStart(event)" updateEnd="onLayerUpdateEnd(event)"/> </esri:Map> <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.events.LayerEvent; import mx.collections.ArrayCollection; import mx.utils.StringUtil; private var loadedCount:int; private var nonLoadedCount:int; private var updateStartedCount:int; private var updateEndedCount:int; private function addLog(message:String):void { log.text = StringUtil.substitute("{0}\n\n{1}", message, log.text); } protected function onLayerLoadError(event:LayerEvent):void { addLog(StringUtil.substitute("Error on loading layer {0}", event.layer.name)); nonLoadedCount++; var mapLayersCount:int = ArrayCollection(map.layers).length; if (mapLayersCount == (nonLoadedCount + loadedCount)) { addLog(StringUtil.substitute("Loaded: {0} of {1} layers\n {2} layers fault on loading.", loadedCount, mapLayersCount, nonLoadedCount)); } } protected function onLayerLoad(event:LayerEvent):void { addLog(StringUtil.substitute("{0} is loaded", event.layer.name)); loadedCount++; var mapLayersCount:int = ArrayCollection(map.layers).length; if (mapLayersCount == (nonLoadedCount + loadedCount)) { addLog(StringUtil.substitute("Loaded: {0} of {1} layers\n {2} layers fault on loading.", loadedCount, mapLayersCount, nonLoadedCount)); } } protected function onLayerUpdateStart(event:LayerEvent):void { addLog(StringUtil.substitute("{0} update started", event.layer.name)); if (updateStartedCount == updateEndedCount) { updateStartedCount = updateEndedCount = 0; // reset } updateStartedCount++; } protected function onLayerUpdateEnd(event:LayerEvent):void { addLog(StringUtil.substitute("{0} update ended >> update success = {1}", event.layer.name, event.updateSuccess)); updateEndedCount++; if (updateStartedCount == updateEndedCount) { addLog("All layers are updated"); } } ]]> </fx:Script> </s:Application>
<?xml version="1.0" encoding="utf-8"?> <s:Application name="Test" 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" > <fx:Script> <![CDATA[ //IMPORTS import com.esri.ags.events.LayerEvent; import com.esri.ags.events.MapEvent; import com.esri.ags.layers.Layer; import mx.collections.ArrayCollection; import mx.controls.Alert; //----------------------------------------- //PRIVATE VARIABLES //----------------------------------------- private var _isLayersLoaded:Boolean = false; private var _layerLoadCount:int = 0; // isLayersLoaded getter // Checks if the private varibale _layerLoadCount == the total map layers in the map public function get isLayersLoaded():Boolean { var loaded:Boolean; var mapLayers:ArrayCollection = this.map.layers as ArrayCollection; if (mapLayers.length == this._layerLoadCount) loaded = true; else loaded= false; return loaded; } //----------------------------------------- // on Map Load loop through all the layers and check if loaded. // if not loaded, listen for the load event to be called. //----------------------------------------- private function _onMapLoad(event:MapEvent):void { for each (var lyr:Layer in this.map.layers) { if (lyr.loaded) _layerLoadCount++; else lyr.addEventListener(LayerEvent.LOAD, _onLayerLoad); } } //----------------------------------------- // if layer load event is called, add 1 to the _layerLoadCount variable. //----------------------------------------- private function _onLayerLoad(event:LayerEvent):void { _layerLoadCount++; } //----------------------------------------- // Test the variable isLayersLoaded //----------------------------------------- private function onPrintClick():void { if (this.isLayersLoaded == false) Alert.show("please wait, all layers are not yet loaded"); else Alert.show("Layers Loaded!"); } ]]> </fx:Script> <esri:Map id="map" load="_onMapLoad(event)" top="76" bottom="10" left="9" right="10"> <esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer/"/> <esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_ShadedRelief_World_2D/MapServer/"/> <esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer/"/> </esri:Map> <s:Button x="10" y="47" label="Button" id="btnPrint" click="onPrintClick();"/> </s:Application>
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.