Solved! Go to Solution.
Jordan,
You can display a popup programatically by following this code sample:
http://resources.arcgis.com/en/help/flex-api/samples/01nq/01nq0000008v000000.htm
import com.esri.ags.Graphic;
import com.esri.ags.components.ContentNavigator;
import com.esri.ags.events.QueryEvent;
import com.esri.ags.geometry.MapPoint;
import com.esri.ags.portal.PopUpRenderer;
import com.esri.ags.portal.supportClasses.PopUpFieldFormat;
import com.esri.ags.portal.supportClasses.PopUpFieldInfo;
import com.esri.ags.portal.supportClasses.PopUpInfo;
import com.esri.ags.utils.GraphicUtil;
import mx.collections.ArrayList;
import mx.controls.Alert;
import mx.events.FlexEvent;
import mx.rpc.events.FaultEvent;
import spark.events.IndexChangeEvent;
private var contentNavigator:ContentNavigator = new ContentNavigator();
protected function createPopupRenderer_initializeHandler(event:FlexEvent):void
{
var field1:PopUpFieldInfo = new PopUpFieldInfo();
field1.fieldName = "MED_AGE";
field1.label = "Median Age: ";
field1.visible = true;
var field2:PopUpFieldInfo = new PopUpFieldInfo();
field2.fieldName = "POP2007";
field2.format = new PopUpFieldFormat();
field2.label = "Population: ";
field2.visible = true;
var popUpInfo:PopUpInfo = new PopUpInfo();
popUpInfo.title = "{STATE_NAME}";
popUpInfo.popUpFieldInfos = [ field1, field2 ];
popUpInfo.showZoomToButton = false;
var popUpRenderer:ClassFactory = new ClassFactory(PopUpRenderer);
popUpRenderer.properties = { "popUpInfo": popUpInfo };
statesGraphicsLayer.infoWindowRenderer = popUpRenderer;
}
protected function queryTask_executeCompleteHandler(event:QueryEvent):void
{
if (event.featureSet.features)
{
for each(var gra:Graphic in event.featureSet.features)
{
gra.addEventListener(MouseEvent.CLICK, selectStateFromList);
}
statesGraphicsLayer.graphicProvider = event.featureSet.features;
statesList.dataProvider = new ArrayList(event.featureSet.features);
map.extent = GraphicUtil.getGraphicsExtent(event.featureSet.features);
}
}
protected function esriService_faultHandler(event:FaultEvent):void
{
Alert.show("Error: " + event.fault.faultString, "Error code: " + event.fault.faultCode);
}
protected function statesList_changeHandler(event:IndexChangeEvent):void
{
statesList.ensureIndexIsVisible(statesList.selectedIndex);
var currentGraphic:Graphic = List(event.currentTarget).selectedItem as Graphic;
var mapPoint:MapPoint = currentGraphic.geometry.extent.center;
contentNavigator.dataProvider = new ArrayList([ currentGraphic ]);
map.infoWindowContent = contentNavigator;
map.zoomTo(currentGraphic.geometry);
map.infoWindow.show(mapPoint);
}
protected function selectStateFromList(event:MouseEvent):void
{
var gr:Graphic = Graphic(event.target);
statesList.selectedItem = gr;
statesList.ensureIndexIsVisible(statesList.dataProvider.getItemIndex(gr));
}
Jordan,
Sure here is the updated script portion of that sample:import com.esri.ags.Graphic; import com.esri.ags.components.ContentNavigator; import com.esri.ags.events.QueryEvent; import com.esri.ags.geometry.MapPoint; import com.esri.ags.portal.PopUpRenderer; import com.esri.ags.portal.supportClasses.PopUpFieldFormat; import com.esri.ags.portal.supportClasses.PopUpFieldInfo; import com.esri.ags.portal.supportClasses.PopUpInfo; import com.esri.ags.utils.GraphicUtil; import mx.collections.ArrayList; import mx.controls.Alert; import mx.events.FlexEvent; import mx.rpc.events.FaultEvent; import spark.events.IndexChangeEvent; private var contentNavigator:ContentNavigator = new ContentNavigator(); protected function createPopupRenderer_initializeHandler(event:FlexEvent):void { var field1:PopUpFieldInfo = new PopUpFieldInfo(); field1.fieldName = "MED_AGE"; field1.label = "Median Age: "; field1.visible = true; var field2:PopUpFieldInfo = new PopUpFieldInfo(); field2.fieldName = "POP2007"; field2.format = new PopUpFieldFormat(); field2.label = "Population: "; field2.visible = true; var popUpInfo:PopUpInfo = new PopUpInfo(); popUpInfo.title = "{STATE_NAME}"; popUpInfo.popUpFieldInfos = [ field1, field2 ]; popUpInfo.showZoomToButton = false; var popUpRenderer:ClassFactory = new ClassFactory(PopUpRenderer); popUpRenderer.properties = { "popUpInfo": popUpInfo }; statesGraphicsLayer.infoWindowRenderer = popUpRenderer; } protected function queryTask_executeCompleteHandler(event:QueryEvent):void { if (event.featureSet.features) { for each(var gra:Graphic in event.featureSet.features) { gra.addEventListener(MouseEvent.CLICK, selectStateFromList); } statesGraphicsLayer.graphicProvider = event.featureSet.features; statesList.dataProvider = new ArrayList(event.featureSet.features); map.extent = GraphicUtil.getGraphicsExtent(event.featureSet.features); } } protected function esriService_faultHandler(event:FaultEvent):void { Alert.show("Error: " + event.fault.faultString, "Error code: " + event.fault.faultCode); } protected function statesList_changeHandler(event:IndexChangeEvent):void { statesList.ensureIndexIsVisible(statesList.selectedIndex); var currentGraphic:Graphic = List(event.currentTarget).selectedItem as Graphic; var mapPoint:MapPoint = currentGraphic.geometry.extent.center; contentNavigator.dataProvider = new ArrayList([ currentGraphic ]); map.infoWindowContent = contentNavigator; map.zoomTo(currentGraphic.geometry); map.infoWindow.show(mapPoint); } protected function selectStateFromList(event:MouseEvent):void { var gr:Graphic = Graphic(event.target); statesList.selectedItem = gr; statesList.ensureIndexIsVisible(statesList.dataProvider.getItemIndex(gr)); }
Don't forget to click the Mark as answer check on this post and to click the top arrow (promote).
Follow these steps as shown in the below graphic:
for (var i:int = 0; i < result.Intersections.length; i++) {
var currentInter:Intersection = result.Intersections.getItemAt(i) as Intersection;
intersections.addItem(currentInter);
var graphic:Graphic = currentInter.createGraphic();
var iwr:ClassFactory = new ClassFactory(IntersectionInfoWindowRenderer);
iwr.properties = {intersection: currentInter};
graphic.infoWindowRenderer = iwr;
graphic.addEventListener(MouseEvent.CLICK, graphicClicked);
}
graphic.addEventListener(MouseEvent.CLICK, graphicClicked, true);map.infoWindow.addEventListener(Event.OPEN, some function);
Jordan,
You may want to try to useCapture on the event listener:graphic.addEventListener(MouseEvent.CLICK, graphicClicked, true);
As far as an event that is launched when the infowindow is shown. Sure there is:map.infoWindow.addEventListener(Event.OPEN, some function);