在foreach循环中获取正确的变量(flex - googlemaps)

时间:2011-12-20 19:41:55

标签: actionscript-3 flex google-maps google-maps-api-3 logic

我正在尝试从每个循环中获取特定变量。这些变量用于在地图上的标记上显示单击事件。如果单击地图上的标记,则会在其上显示详细信息。现在,每次循环开始时(50次)都会覆盖这些细节。我正在寻找的解决方案,让我在地图上选择一个带有相应细节的标记。

可能有一个简单的解决方案,但我还没有找到它。

代码:

for each(artistXML in artistList.events.event)
                {
                    var gLat:int =  artistXML.venue.location.*::point.*::lat;
                    var gLong:int = artistXML.venue.location.*::point.*::long;

                    var evntLng:LatLng = new LatLng(gLat,gLong);
                    var title:String = artistXML.title; 
                    var wanneer:String = artistXML.startDate;
                    var waar:String = artistXML.venue.location.city;
                    var pic:String = artistXML.venue.image.(@size=="medium");

                    var marker:Marker = new Marker(new LatLng(gLat, gLong));
                    var info:InfoWindowOptions = new InfoWindowOptions();


                    marker.addEventListener(MapMouseEvent.CLICK, function(event:Event):void {

                        var marker:Marker = event.target as Marker;
                        marker.openInfoWindow(new InfoWindowOptions({contentHTML: "<p><b>" + title + "</b></p><br/><p>" + wanneer + "</p> <br/> <p>" + waar + "</p>"}));

                    }); 

                    map.addOverlay(marker);

                    Goverlay++;

                }

由于

1 个答案:

答案 0 :(得分:1)

在开始下一个循环之前,您需要在某处存储对值的引用。

我不确定您的MarkerInfoWindowOptions类的结构是什么,所以可能有更好的方法,但这是一个天真的解决方案:

创建名为mapMarkersinfoWindows的2个数组。对于每个循环,将新的Marker和新的InfoWindowOptions实例推送到适当的数组中。您还需要在InfoWindowOptions上设置这些变量。然后在您的单击处理程序中,您可以查找单击的标记索引(mapMarkers.indexOf(marker))并使用该索引获取相应的InfoWindowOptions。