2011-12-20 54 views
0

我試圖從每個循環中獲取特定變量。這些變量用於在地圖上的標記上顯示點擊事件。如果您點擊地圖上的標記,細節會彈出。現在這些細節每次循環開始時都會被覆蓋(50次)。我正在尋找的解決方案,讓我在地圖上選擇一個標記,並附上相應的詳細信息。在foreach循環中獲取正確的變量(flex - googlemaps)

可能有一個簡單的解決方案,但我還沒有找到它。

代碼:

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

您需要在開始下一個循環之前存儲的值的參考地方。

我不知道你的MarkerInfoWindowOptions類的結構,所以有可能是一個更好的辦法,但這裏有一個天真的解決方案:

創建2個陣列稱爲mapMarkersinfoWindows。對於每個循環,將新的Marker和新的InfoWindowOptions實例推入適當的數組中。您還需要在InfoWindowOptions上設置這些變量。然後在您的點擊處理程序中,您可以查找被點擊的標記的索引(mapMarkers.indexOf(marker))並使用該索引獲取相應的InfoWindowOptions。