получение правильных переменных в цикле foreach (flex - googlemaps) - PullRequest
0 голосов
/ 20 декабря 2011

Я пытаюсь получить конкретные переменные для каждого цикла. Эти переменные используются для отображения события щелчка на маркере на карте. Если щелкнуть маркер на карте, над ним появится информация. Теперь эти детали перезаписываются при каждом запуске цикла (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 Ответ

1 голос
/ 21 декабря 2011

Вам нужно сохранить ссылку на значения где-то перед началом следующего цикла.

Я не уверен, какова структура ваших классов Marker и InfoWindowOptions, поэтому может бытьлучший способ, но вот наивное решение:

Создайте 2 массива с именами mapMarkers и infoWindows.Для каждого цикла вставьте новый маркер и новые экземпляры InfoWindowOptions в соответствующие массивы.Вам нужно будет также установить эти переменные в InfoWindowOptions.Затем в вашем обработчике кликов вы можете найти индекс маркера, по которому щелкнули (mapMarkers.indexOf(marker)), и использовать этот индекс для получения соответствующих InfoWindowOptions.

...