private function mapClickHandler(event:MapMouseEvent):void{
clickGraphicsLayer.clear();
Alert.show("mouseClicked");
var identifyParams:IdentifyParameters = new IdentifyParameters();
identifyParams.returnGeometry = true;
identifyParams.tolerance = 5;
identifyParams.width = map.width;
identifyParams.height = map.height;
identifyParams.geometry = event.mapPoint;
identifyParams.mapExtent = map.extent;
identifyParams.spatialReference = map.spatialReference;
var clickGraphic:Graphic = new Graphic(event.mapPoint, clickPtSym);
clickGraphicsLayer.add(clickGraphic);
identifyTask.addEventListener(IdentifyEvent.EXECUTE_COMPLETE, myResultFunction);
identifyTask.execute(identifyParams);
//why does this entire function repeat itself based on the number of times the map has been clicked??????????????????????????
function myResultFunction(event:IdentifyEvent):void
{
Alert.show("test1");
var results:Array = event.identifyResults;
if (results && results.length > 0)
{
Alert.show("test2");
var result:IdentifyResult = results[0];
var resultGraphic:Graphic = result.feature;
var resultObj:Object = results[0].feature.attributes;
// Alert.show(resultGraphic.attributes.toString());
switch (resultGraphic.geometry.type){
case Geometry.MAPPOINT:
{
Alert.show("test3");
resultGraphic.symbol = selectSymbol;
clickGraphicsLayer.add(resultGraphic);
break;
}
case Geometry.POLYLINE:
{
//resultGraphic.symbol = slsIdentify;
break;
}
case Geometry.POLYGON:
{
//resultGraphic.symbol = sfsIdentify;
break;
}
}
Alert.show("test4");
lastIdentifyResultGraphic = resultGraphic;
//switch to the proper table..
var layerId:Number = result.layerId;
var vbox:VBox = VBox(tn.getChildByName(myDynamicService.layerInfos[layerId].name+"_tab"));
tn.selectedChild = vbox;
//switch to proper row in table..
var datagrid:mx.controls.DataGrid = mx.controls.DataGrid(vbox.getChildByName(myDynamicService.layerInfos[layerId].name+"_dg"))
var attributes:ArrayCollection = datagrid.dataProvider as ArrayCollection;
var layer:FeatureLayer = new FeatureLayer(myDynamicService.url+"/"+layerId.toString());
layer.addEventListener(LayerEvent.LOAD, layerLoad_Handler);
Alert.show("test5");
function layerLoad_Handler(event:LayerEvent):void{
layer.removeEventListener(LayerEvent.LOAD, layerLoad_Handler);
Alert.show("test6");
var objID:String = String(results[0].feature.attributes["Name"]);
Alert.show(objID);
//var str:String = attributes.getItemAt(0)[layer.layerDetails.objectIdField].toString();
//Alert.show(str);
}
}
}
function myFaultFunction(error:Object, clickGraphic:Graphic = null):void
{
Alert.show(String(error), "Identify Error");
}
}
Solved! Go to Solution.
identifyTask.execute(identifyParams, new AsyncResponder(identResult, identFault));
function identResult(result:IdentifyResult, token:Object = null):void
{
...
}
function identFault(fault:Fault, token:Object = null):void
{
...
}