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 文件。
问题: 网络 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 文件。