Я нашел другие проблемы с переполнением стека, предлагая, что использование события «idle» - это способ вызвать обратный вызов, когда карта google полностью загружена. Но в моем случае я хочу запустить некоторый код, чтобы вставить некоторый текст в элемент в пользовательском интерфейсе карты, но я нахожу, что «незанятые» огни до создания этих элементов.Обратный вызов при загрузке элементов элементов управления Google Maps
Чтобы быть явным, я придаю функцию инициализации для метода загрузки окна:
google.maps.event.addDomListener(window, 'load', initialize);
Внутри инициализации, я создаю некоторые элементы пользовательского интерфейса и прикрепить их к карте:
function initialize() {
map = new google.maps.Map(document.getElementById("map-div"), mapOptions);
...
// set up the controls div
var controlsDiv = document.createElement('div');
controlsDiv.id="cd";
controlSetup(controlsDiv);
map.controls[google.maps.ControlPosition.RIGHT_TOP].push(controlsDiv);
}
Хорошо, но тогда то, что я хочу сделать, это запустить функцию, как только все будет готово. В моем случае я собираюсь вставить дополнительный текст в div-элементы управления, поэтому мне нужно, чтобы они были там.
Я попытался это в последней строке метода инициализации:
google.maps.events.addListenerOnce(map,'idle',emitText);
Однако emitText имеет линию, которая пытается getElementById («CD») (далее controlsDiv на карте), но я получите, что он равен нулю, потому что emitText уволил, прежде чем элементы управленияDiv действительно завершили загрузку.
Вопрос в том, как определить полную загрузку карты, включая любые разделители пользовательского интерфейса. Мое тестирование показывает, что событие «бездействия» запускается до того, как элементы пользовательского интерфейса загружаются и доступны в DOM. Заранее спасибо!
Моим временным решением было просто поставить метод, который опросит существование, прежде чем идти вперед. Итак, теперь, в последней строке инициализации, я вызываю initialEmitText вместо emitText. InitialEmitText проверяет значение null на элементе соответствия и устанавливает тайм-аут, чтобы продолжать проверять, являются ли они пустыми, если они не являются, вызывает emitText. Я не думаю, что это супер-элегантный, но он работает. Я оставлю вопрос открытым, если кто-то знает лучшее решение. – JawguyChooser
Вы нашли решение? –
Вау, это было 3 года назад! Я уверен, что в итоге я просто придерживался опроса, который я описал в комментарии выше. – JawguyChooser