Javascript / Google Maps, автоматически созданное поле со списком не работает на второй итерации - PullRequest
0 голосов
/ 04 октября 2010

Я довольно новичок в Javascript и API GoogleMaps. У меня проблема с картой, которую я заполняю маркерами. У меня есть поле со списком, которое позволяет пользователю выбрать маркер, и он выделяет маркерна экране для них, открыв информационное окно для него.

Использование отличного учебного пособия Майка Уильямса по API карт Google (http://econym.org.uk/gmap/index.htm) Я хорошо начал работу, и большая часть моего приложения работает.

Проблема может быть найдена в этой ссылке, которая является слегка измененной версией одного из примеров Майка Уильяма:

http://duncanmargetts.com/map3.html

При начальной загрузкестраница, на которой вы видите 100 заполненных маркеров ... для каждого маркера на GEvent создается прослушиватель событий, и когда пользователь выбирает элемент из поля со списком, отображается информационное окно ..

Я добавил SetInterval, которыйперерисовывает карту каждые 8 ​​секунд .. после перерисовки карты поле со списком все еще загружается с правильным содержимым, но прослушиватель событий не сработает .. нет всплывающего окна с информациейвидно.

Шаги для воссоздания:

  1. Перейдите по ссылке (http://duncanmargetts.com/map3.html)

  2. Немедленно выберите элемент из выпадающего списка внизуэкрана ... обратите внимание, что на соответствующем маркере появляется всплывающее окно.

  3. Подождите не менее 8 секунд, пока setInterval сработает ..

  4. Выберите элемент в ComboBox. Обратите внимание, что ничего не происходит: (

Немного информации о коде:

drawMap () вызываетсякогда страница сначала загружается .. drawMap () вызывается каждые 8 ​​секунд после этого SetInterval ..

drawMap извлекает файл XML с подробной информацией о 100 маркерах, и каждый маркер вызывает «createMarker» .. по путиselect_html, строка, создается и в конце итерации маркеров она помещается в div ("selection") с использованием document.getElementById ("selection"). innerHTML = select_html;

IЯ предполагаю, может быть, я не очищаю старых слушателей .. возможно .. Я вотпо адресу GEvent.clearListeners, но не могу разобраться, если а) это то, что мне нужно, или б) как интегрировать его в мой код.

Большое спасибо за прочтение этой статьи. Если у вас есть идеи, яконечно был бы очень благодарен ..

С большим спасибо,

Дункан.

1 Ответ

0 голосов
/ 29 октября 2010

var i = 0;в строке 32 не сбрасывается в ноль при каждой перезагрузке карты ..

Дункан.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...