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