//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); } }