Google 地球网络 - 网络 link

Google Earth Web - network link

问题: 网络 link 在 Google Earth Web(Web,不是桌面)中工作吗?

在 Google Earth Web 中,我想调用网络 link 的 kml 文件。

这里是 init.kml 在 Google Earth 中手动导入文件的代码:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
    <name>QI01</name>
    <visibility>1</visibility>
    <open>1</open>
    <NetworkLink>
        <name>test</name>
        <visibility>1</visibility>
        <Link>
          <href>zzz.kml</href>
          <refreshMode>onInterval</refreshMode>
          <refreshInterval>5</refreshInterval>
        </Link>
        <flyToView>1</flyToView>
    </NetworkLink>
</Folder>
</kml>

和 zzz.kml 代码:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
    <Placemark>
        <name>Place 1</name>
        <description>
        <![CDATA[
        Place number 1
        ]]>
        </description>
        <Point>
            <coordinates>-76.661005,46.428222,0</coordinates>
        </Point>
    </Placemark>
    <Placemark>
        <name>Place 2</name>
        <description>
        <![CDATA[
        Place number 2
        ]]>
        </description>
        <Point>
            <coordinates>-72.661005,42.468222,0</coordinates>
        </Point>
    </Placemark>
</Document>
</kml>

这两个文件在我的 Google 驱动器上的同一个文件夹中。我尝试用 url <href>https://drive.google.com/file/d/1bqcyrkqgNh9N8zKEr1gCI3o.../</href> 替换 <href>zzz.kml</href>,但没有成功。

打不开(zzz.kml单独使用效果很好,但是用init.kml打不开)

编辑 1:

我尝试加载 public 文件 (http://developers.google.com/kml/documentation/Point.kml)。我的文件调用 point.kml 的代码是:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<NetworkLink>
  <name>Loads Point.kml</name>
  <Link>
    <href>http://developers.google.com/kml/documentation/Point.kml</href>
  </Link>
</NetworkLink>
</kml>

这是https://developers.google.com/kml/documentation/updates的例子。

也不行

编辑 2:

我在 Notepad++ 中编写了 copy/paste 代码,并以 kml 扩展名保存文件。我使用“新建项目”按钮 >“从计算机导入 KML 文件”导入文件。该文件在 Google Earth 中打开,但不是数据:

当我复制下载文件 pbs_lcet_trails.kml 并使用“新建项目”按钮 >“从计算机导入 KML 文件”而不是通过其他文件直接打开它时,它有效:

导入 KML 文件后,我打开 devTool 并:

我注意到当我直接导入带有数据的 KML 文件时,除了“Unknown RPC Service : picker”之外,我也有同样的错误。

关于创建对象,我试过了,但是无法在项目中导入KML文件。我必须手动添加数据,这不是一个可行的解决方案。

再次感谢您的宝贵时间。

通过 Google 网络版地球中的 NetworkLink 加载 KML 或 KMZ 文件要求文件 public 只能在互联网上访问,并且要求主机服务器发送适当的 CORS headers 与文件,允许地球客户端代码加载文件。作为浏览器中的网络应用程序,Google 地球网络强制执行 CORS(跨源资源共享),而桌面应用程序地球专业版则没有。

您公司内部网上的文件的问题可能是它们无法在 public 网络上访问,这是地球网络客户端能够获取和呈现它们所必需的。

对于您尝试过的 public 示例文件 (http://developers.google.com/kml/documentation/Point.kml),它没有提供正确的 CORS headers,因为它是在 Earth Web 存在之前设置的.

您可以在浏览器的开发控制台中看到 CORS 错误,如屏幕截图底部所示:

为了表明 NetworkLinks 可以在地球网络中工作,这里有一个 public KML 文件与 CORS headers 一起提供,它应该可以工作: https://www.gstatic.com/earthfeed/pbs/kml/pbs_lcet_trails.kml

下面是一个将加载它的 KML NetworkLink 示例(将其保存为本地 KML 文件并将其加载到地球网络中):

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<NetworkLink>
  <name>Lewis and Clark Trails</name>
  <Link>
    <href>https://www.gstatic.com/earthfeed/pbs/kml/pbs_lcet_trails.kml</href>
  </Link>
</NetworkLink>
</kml>

请注意,public 可访问性和 CORS headers 的要求适用于地球网络中加载的许多类型的文件,包括 balloons/panels 中使用的图像文件、作为叠加层或用于图标;气球中使用的任何音频或视频文件;当然还有通过 NetworkLinks 加载的任何其他 KML 或 KMZ 文件。