//fires when geoprocessor finishes. retrives result data protected function gp_jobCompleteHandler(event:GeoprocessorEvent):void { if (event.jobInfo.jobStatus == JobInfo.STATUS_SUCCEEDED) { statusArea.appendText("Retrieving results from server..." + "\n"); scenarioIterator += 1 resMapServ = gp.getResultMapServiceLayer(gp.submitJobLastResult.jobId) resMapServ.name = "Scenario" + String(scenarioIterator) if (resMapServ.loaded) { map.addLayer(resMapServ) } else { resMapServ.addEventListener(LayerEvent.LOAD, resMapServ_loadHandler, false, 0, true); resMapServ.addEventListener(LayerEvent.LOAD_ERROR, resMapServ_loadErrorHandler, false, 0, true); function resMapServ_loadHandler(event:LayerEvent):void { resMapServ.removeEventListener(LayerEvent.LOAD, resMapServ_loadHandler); resMapServ.removeEventListener(LayerEvent.LOAD_ERROR, resMapServ_loadErrorHandler); map.addLayer(resMapServ) } function resMapServ_loadErrorHandler(event:LayerEvent):void { Alert.show("There was a problem loading the result. \n The analysis is being re-run. \n Sorry for the inconvenience.\n" +event.fault.message) gp.submitJob(requestObject); } } } else { var messages1:Array = event.jobInfo.messages; var count1:int = messages1.length; var index1:int = count1-4; var message1:String = messages1[index1].description; Alert.show("Geoprocessing Error:\n" + message1); } }
Solved! Go to Solution.
protected function gp_jobCompleteHandler(event:GeoprocessorEvent):void
{
gpResEvent = event;
if (event.jobInfo.jobStatus == JobInfo.STATUS_SUCCEEDED)
{
statusArea.appendText("Retrieving results from server..." + "\n");
scenarioIterator += 1
//wait a bit before adding the result so map service has time to start
trace("starting delay...")
var Timer:uint = setTimeout(delay, 1000);
function delay():void {
resMapServ = gp.getResultMapServiceLayer(gp.submitJobLastResult.jobId)
resMapServ.name = "Scenario" + String(scenarioIterator)
trace("delayed!");
clearInterval(Timer); //stops the function from being called again
if (resMapServ){trace("successfully added")}
else{trace("did not add")}
if (resMapServ.loaded)
{
map.addLayer(resMapServ)
}
else //this is the workaround to resubmit parameters if map doesn't load
{
resMapServ.addEventListener(LayerEvent.LOAD, resMapServ_loadHandler, false, 0, true);
resMapServ.addEventListener(LayerEvent.LOAD_ERROR, resMapServ_loadErrorHandler, false, 0, true);
function resMapServ_loadHandler(event:LayerEvent):void
{
resMapServ.removeEventListener(LayerEvent.LOAD, resMapServ_loadHandler);
resMapServ.removeEventListener(LayerEvent.LOAD_ERROR, resMapServ_loadErrorHandler);
map.addLayer(resMapServ)
}
function resMapServ_loadErrorHandler(event:LayerEvent):void
{
Alert.show("There was a problem loading the result. \n JOBID " + gp.submitJobLastResult.jobId + "\n The analysis is being re-run. \n Sorry for the inconvenience.\n" +event.fault.message)
gp.submitJob(requestObject);
}
}
}
}
else
{
var messages1:Array = event.jobInfo.messages;
var count1:int = messages1.length;
var index1:int = count1-4;
var message1:String = messages1[index1].description;
Alert.show("Geoprocessing Error:\n" + message1);
}
}
protected function gp_jobCompleteHandler(event:GeoprocessorEvent):void
{
gpResEvent = event;
if (event.jobInfo.jobStatus == JobInfo.STATUS_SUCCEEDED)
{
statusArea.appendText("Retrieving results from server..." + "\n");
scenarioIterator += 1
//wait a bit before adding the result so map service has time to start
trace("starting delay...")
var Timer:uint = setTimeout(delay, 1000);
function delay():void {
resMapServ = gp.getResultMapServiceLayer(gp.submitJobLastResult.jobId)
resMapServ.name = "Scenario" + String(scenarioIterator)
trace("delayed!");
clearInterval(Timer); //stops the function from being called again
if (resMapServ){trace("successfully added")}
else{trace("did not add")}
if (resMapServ.loaded)
{
map.addLayer(resMapServ)
}
else //this is the workaround to resubmit parameters if map doesn't load
{
resMapServ.addEventListener(LayerEvent.LOAD, resMapServ_loadHandler, false, 0, true);
resMapServ.addEventListener(LayerEvent.LOAD_ERROR, resMapServ_loadErrorHandler, false, 0, true);
function resMapServ_loadHandler(event:LayerEvent):void
{
resMapServ.removeEventListener(LayerEvent.LOAD, resMapServ_loadHandler);
resMapServ.removeEventListener(LayerEvent.LOAD_ERROR, resMapServ_loadErrorHandler);
map.addLayer(resMapServ)
}
function resMapServ_loadErrorHandler(event:LayerEvent):void
{
Alert.show("There was a problem loading the result. \n JOBID " + gp.submitJobLastResult.jobId + "\n The analysis is being re-run. \n Sorry for the inconvenience.\n" +event.fault.message)
gp.submitJob(requestObject);
}
}
}
}
else
{
var messages1:Array = event.jobInfo.messages;
var count1:int = messages1.length;
var index1:int = count1-4;
var message1:String = messages1[index1].description;
Alert.show("Geoprocessing Error:\n" + message1);
}
}