LayerEvent.UPDATE_ENDevent.updateSuccess<?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>