#javascript #matlab #google-earth #google-earth-plugin
#javascript #matlab #google-планета Земля #google-планета Земля-плагин
Вопрос:
Я работаю над загрузкой данных моделирования Matlab в подключаемый модуль Google Планета Земля через COM.
Моя проблема в том, что команда, которая должна быть вызвана после завершения загрузки Google Планета Земля, вызывается до этого. Это, конечно, приводит к ошибке.
Я мог бы использовать команду pause, чтобы приостановить код, ожидающий загрузки Google Планета Земля. Но это решение не настолько эффективно, поскольку я не знаю точно, как быстро или как медленно Google Планета Земля будет загружаться на разных компьютерах.
Я также пытался использовать свойства COM-объекта. Это было близко, но без сигары. Код выглядит следующим образом
waitfor(h.Document.parentWindow.document,'readyState','complete')
или также этот:
while strcmp(h.Document.parentWindow.document.readyState,'complete')== 0
pause(1);
end
Есть ли какие-либо свойства объекта, которые можно было бы использовать? Спасибо!
Ответ №1:
Найдено решение!
Подключаемый модуль Google Earth вызовет метод «initCallback» после завершения загрузки.
Добавляя строку в метод «initCallback», я меняю заголовок моего html-документа на другое имя, что указывает на то, что плагин загружен.
function initCallback(pluginInstance) {
ge = pluginInstance;
ge.getWindow().setVisibility(true);
// tell the application the plugin is ready
//(window.external.JSInitSuccessCallback_(pluginInstance);
document.title = "Google Earth Plugin - Ready";
// prevent mouse navigation in the plugin
ge.getOptions().setMouseNavigationEnabled(false);
}
В конце MATLAB я просто добавил цикл a while, сравнивая заголовок html-документа, приостанавливая выполнение до завершения загрузки плагина.
while strcmp(h.Document.title,'Google Earth Plugin - Ready')~=1
pause(0.01)
end
Может быть, есть другое, более элегантное решение, хотелось бы услышать ваши отзывы