дождитесь завершения загрузки Google Планета Земля перед выполнением следующей команды в matlab

#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
  

Может быть, есть другое, более элегантное решение, хотелось бы услышать ваши отзывы