2011-04-13 44 views
0

使用Google Earth插件,我试图加载KML文件,查找并渲染其LookAt组件,并且在视图完成渲染后,加载参观 控件。Google地球插件:setTour()AFTER setAbstractView()完成渲染

我不是很流利的javascript,我不知道我遇到的问题是javascript idiocy(我的)还是无视GEP的工作方式。在阅读文档时,没有看到GEP为go.getView()提供的任何“endevent”。setAbstractView()...

因此,我尝试了我能想到的最简单的事情...超时。它加载kml并呈现kml LookAt,但根本不加载巡视控件。如果我删除了if/timeout结构,GEP将取消渲染setAbstractView并立即加载巡视控件。有任何想法吗?

  function whenloaded(kmlObject) { 
        if (!kmlObject) { 
          setTimeout(function() { 
            alert('Bad or Null KML file'); 
          }, 0); 
          return; 
        } 

        ge.getFeatures().appendChild(kmlObject); 

        if (kmlObject.getAbstractView() !== null) { 
          ge.getView().setAbstractView(kmlObject.getAbstractView()); 
        } 

        // Walk the DOM looking for a KmlTour 
        walkKmlDom(kmlObject, function() { 
          if (this.getType() == 'KmlTour') { 
            tour = this; 
            return false; // stop the DOM walk here. 
          } 
        }); 

      } 

      var url = 'url/to/file.kml'; 

      google.earth.fetchKml(ge, url, whenloaded()); 

      if (timeout !== null) 
        ge.getTourPlayer().setTour(tour); 

      // wait for 5000 ms 
      timeout = window.setTimeout(function() { 
        vcTimeout = null; 
      }, 5000); 

回答