谷歌地球fetchKml超时(google earth fetchKml timeout)

2019-09-19 19:19发布

我呼吁通过JavaScript GOOLGE地球API函数“fetchKml”。 当读取大型文件的Firefox给我,说一个弹出“此页上的脚本可能忙,或者它可能已停止响应。现在你可以停止脚本,在调试器中打开脚本,或者让脚本继续下去。”

我注意到谷歌群体问题331(“fetchKml网速较慢或快速连接和大型KML / KMZ文件失败”)类似的问题。 嗯唉 - 这个问题是在2009年现在是2012年。我怎么progromatically得到文件没有得到超时问题加载?

谢谢。

Answer 1:

根本原因是, fetchKml是同步的。 这将阻止,直到KML文件获取在网络上,解析,它指定内容的插件加载。 如果其中任何一个步骤,花费太长的时间(服务器响应缓慢,该文件非常大,内容过于复杂)等函数调用的时间过长,就会跳闸慢脚本的浏览器警告,这通常只是触发一个简单的基于时间的监视循环。

有几种方法可以解决此问题:

  • 最简单的方法是将你的内容分成几个独立的KML文件并加载他们每个人,也许用得到setTimeout每间fetchKml()调用。 这不会帮助,如果你的主要问题是延迟,但既然你说这是大的KML文件发生,这可能是不是这里的情况。

  • 惯用的方法是使用NetworkLink一起在你的KML加载这些其他文件。 第一fetchKml调用将是同步的,但后来(取决于如何更新机制设置 )后续内容将在其自己的时间的插件加载,不会阻塞JavaScript的执行线程。

  • 最后,有取事项 - 到 - 你自己的手的方式。 您可以使用浏览器的原生XMLHttpRequest功能加载KML文件,这是默认异步的。 当加载的文件,你的回调函数将收到通知,然后你可以使用parseKml会()来加载文件中的插件,并显示其内容。 需要注意的是parseKml也是同步的,所以它会阻止,而该文件正在解析和创建的内容,但通常是比较下载文件摆在首位非常快一步。



文章来源: google earth fetchKml timeout