Я работаю в Flash Builder 4 с API-интерфейсом API карты Google. Я создал карту, загрузил на нее некоторые пользовательские маркеры и добавил к каждому маркеру некоторых слушателей MouseEvent.Динамический API Google Maps InfoWindow Содержимое HTML
Проблема возникает, когда я загружаю панель InfoWindow. Я хочу динамически установить htmlContent на основе информации, хранящейся в базе данных. Проблема в том, что эта информация может меняться каждые две секунды, и каждый маркер имеет уникальный набор данных, поэтому я не могу статически устанавливать его во время создания маркеров. У меня есть метод, который каждую минуту загружает все записи из моей базы данных в переменную Object. Все, что мне нужно отобразить в htmlContent, содержится в этом объекте под уникальным идентификатором.
Основная проблема заключается в том, что у меня нет возможности однозначно идентифицировать информационное окно, поэтому я не могу определить, какую информацию вывести в панель.
marker.addEventListener(MapMouseEvent.ROLL_OVER, function(e:MapMouseEvent):void { showInfoWindow(e.latLng) }, false, 0, false);
Это мой прослушиватель событий мыши. Функция я называю, «showInfowindow» выглядит следующим образом:
private function showInfoWindow(latlng:LatLng):void
{
var options:InfoWindowOptions = new InfoWindowOptions({title: appData[*I NEED A UNIQUE ID HERE!!!*].type + " Summary", contentHTML: appData[*I NEED A UNIQUE ID HERE!!!*].info});
this.map.openInfoWindow(latlng, options);
}
Я думал, что на что-то, будучи в состоянии передать переменную в моем прослушивателя событий декларации, но он просто ненавидит того, динамическая переменная, передаваемая через, него возвращает только последнее значение.
Пример:
marker.addEventListener(MapMouseEvent.ROLL_OVER, function(e:MapMouseEvent):void { showInfoWindow(e.latLng, record.unit_id) }, false, 0, false);
Это решение мучительно близко к работе. Я повторяю цикл, чтобы создать свои маркеры, когда я попробую вышеупомянутое решение и перевернул маркер. Я получаю информацию, но информация каждого маркера отражает любую информацию, созданную последним маркером.
Прошу прощения за длинное объяснение, но я просто хотел сделать свой вопрос максимально ясным. Есть ли у кого-нибудь какие-либо идеи о том, как исправить мое почти-то-решение, которое я разместил внизу или с самого начала?
Спасибо заранее,
Питер Ханнеман
У меня нет опыта работы с ActionScript, но это похоже на проблему с закрытием. Вы можете проверить эту статью: https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Working_with_Closures#Creating_closures_in_loops.3a_A_common_mistake (на JavaScript, но я думаю, что то же самое относится к Action Script) –