3

我们有一个 KMZ 文件,可以很好地加载到 Google 地球桌面应用程序中。没有错误。

当我们尝试使用 Google 地球插件做同样的事情时,它甚至不会从fetchKml函数中返回。我们需要知道fetchKml在本地文件上使用的任何特殊设置吗?

我正在尝试像这样加载文件:

// Where 'ge' is the Google Earth Plugin
var href = 'C:/KMLDATA/TEST.KMZ';
google.earth.fetchKml(ge, href, function(kml) { /* do something with kml */ });
4

1 回答 1

3

这与 Google 地球插件本身无关,而是与 JavaScript 沙箱有关。

基本上 JavaScript 无法访问本地文件系统 - 所以你不能简单地使用本地文件的路径,例如你在代码中的路径......

var href = 'C:/KMLDATA/TEST.KMZ';
google.earth.fetchKml(ge, href, function(kmlObject) { ... }

要在浏览器中处理本地文件,您有多种选择。

  1. 设置本地文件服务器并通过 http 服务文件。这在任何操作系统中都相对容易做到。所以这C:/KMLDATA/TEST.KMZ可能成为http://localhost/KMLDATA/TEST.KMZ

  2. 使用一些可以访问文件系统的“插件”对象。在所有浏览器上工作有点棘手和困难。诸如 ActiveX、XPCOM、签名 Java 小程序等之类的东西。我做了一个通过 ActiveX 将本地 .kml 文件加载到插件中的示例——显然它只能在 IE 中工作。

  3. 在 HTML5 中使用文件 api。很多代码,而不是我用 kml 实际尝试过的东西。本教程非常详尽,涵盖了大多数方面。

我会说,到目前为止,选项 1 是您最好的选择。设置本地文件服务器将允许您轻松加载和测试所有 kml/kmz 文件。

如果这些都不可能或不适合您,那么正如其他人所建议的那样,将文件托管在公共服务器上确实是唯一的选择。

于 2013-02-01T21:10:18.890 回答