Using version 2.5, I have a widget that allows users to add their own dynamic services to the TOC by entering the service URL and selecting a layer. I'm trying to enable the default identify tool to work for user layers the same way it works when using the "popupconfig" option in the XML config file for a layer. I can use my widget to add a new layer to the TOC and display it, but nothing happens when I click on a feature. The popup works if I define the same layer in my XML config file with the popupconfig option. Has anyone else tried this? I want to be able to use popups for user added layers without needing a precreated popup XML file or using the IdentifyWidget.
Code:
private function createPopUp(url:String,layer:ArcGISDynamicMapServiceLayer,layerId:int):void
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, completeHandler);
loader.load(new URLRequest(url+"/"+layerId+"?f=json"));
function completeHandler(event:Event):void {
var loader:URLLoader = URLLoader(event.target);
var svc:Object = JSON.decode(loader.data);
var popupFields:Array = [];
var firstfield:String =null;
for each(var field:Object in svc.fields)
{
if(field.name=="OBJECTID"||field.name=="Shape_Length"||field.name=="Shape_Area" || field.name=="Shape")continue;
var popupFieldInfo:PopUpFieldInfo = new PopUpFieldInfo();
if(!firstfield)firstfield=field.name;
popupFieldInfo.fieldName = field.name;
popupFieldInfo.label = field.alias;
popupFieldInfo.visible = true;
popupFieldInfo.format = new PopUpFieldFormat();
popupFields.push(popupFieldInfo);
}
var popUpInfo:PopUpInfo = new PopUpInfo();
// Tell the pop-up info about the field name template
popUpInfo.title = "{"+firstfield+"}";
popUpInfo.popUpFieldInfos = popupFields;
// Create the class factory
var popUpRenderer:ClassFactory = new ClassFactory(PopUpRenderer);
// Set the "popUpInfo" key
popUpRenderer.properties = { "popUpInfo": popUpInfo };
var layerInfoWindowRenderer:LayerInfoWindowRenderer = new LayerInfoWindowRenderer();
layerInfoWindowRenderer.layerId = Number(layerId);
var infoWindowRenderer:ClassFactory = new ClassFactory(PopUpRenderer);
infoWindowRenderer.properties = { popUpInfo: popUpInfo };
var arrLayerInfoWindowRenderer:Array = [];
arrLayerInfoWindowRenderer.push(popUpRenderer);
layer.layerInfoWindowRenderers=arrLayerInfoWindowRenderer;
}
}