2013-01-04 204 views
2

我必须显示大的kml文件到我的网站与谷歌地球插件。该模型似乎总是正确下载,但不显示:有时我必须右键单击插件像5或6次,看看正在显示的模型。 之后,如果我重新加载页面,它会被正确显示。kmz文件不显示在谷歌地球插件 - 必须放大和缩小以显示它

我使用下面的代码:

<script type="text/javascript" > 
google.load("earth", "1"); 
var ge; 
function init() { 
    google.earth.createInstance('map3D', initCB, failureCB); 
} 

function initCB(instance) { 
    ge = instance; 
    ge.getWindow().setVisibility(true); 
    ge.getNavigationControl().setVisibility(ge.VISIBILITY_SHOW); 

    google.earth.fetchKml(ge, "<?php echo $kmz ?>", function(kmlObject) { 
     if (kmlObject) 
      { 
       var la = ge.createLookAt(''); 
       la.set(<?php echo $lat ?>, <?php echo $long ?>, <?php echo $alt+500 ?>, ge.ALTITUDE_RELATIVE_TO_GROUND, 0, 45, 10); 
       ge.getView().setAbstractView(la); 

       ge.getFeatures().appendChild(kmlObject); 


      } 
    }); 


} 
    function failureCB(errorCode) { 
     alert("failure"); 
} 

google.setOnLoadCallback(init); 
</script> 

我还试图用createNetworkLink但问题仍然存在。 我应该改变什么才能使它工作?

谢谢!

+0

当你说'大kml文件',你是什么意思?即文件是否包含大量标记?或者它加载大型模型,大图像等?无论哪种情况,你可以发布一个链接到你的kml的例子吗? – Fraser

+0

我的kmz文件大约是4mB。它们由一个大的dae文件(〜2mB)和一个大的纹理图像(〜2mB)组成。 我在这里上传了一个测试文件:http://benoit.hanotte.free.fr/ge.html 当插件第二次放大时,应该显示模型,但有时我需要缩小以显示它 – Ben

回答

1

这只是需要花费时间才能加载到导致问题的插件的模型。我已经在几个操作系统上的许多浏览器中测试过它,并且在所有情况下的行为都是相同的。

它对后续页面重新加载起作用的原因是插件正在缓存数据,因此它实际上并没有第二次获取数据。

缩小,放大没有做任何事情来加载模型更快 - 它只是将时间传递到它加载。

,每次考试我都做了模型总是加载 - 但可以采取秒2和10之间,以显示...

没有很大,你可以做这个除了尝试和优化KMZ归档中的.dae和图像文件,以减小文件大小。这会使模型加载并显示比目前更快的速度。

+0

所以你永远不必放大和缩小显示它?因为即使在我的本地服务器上,我也有这个问题,加载时间可以忽略不计,我不得不双击右键两次以显示它。 我还没有找到任何模型显示调用的回调方法,只有一个调用加载完成时,它将是非常有用的显示加载消息。 – Ben

+0

是的,我没有放大显示。 AFAIK一个本地服务器不会减少'加载时间',只是'下载时间' - 无论文件来自哪个插件仍然需要加载模型数据......我也使用本地服务器进行了测试向上。我相信在api中有某种“加载完成”事件的开放功能请求。 – Fraser

+0

是的这里是:http://code.google.com/p/earth-api-samples/issues/detail?id=5 - 这是第五次请求所以也许它永远不会实现:( – Fraser