3

我有一个包含地标列表的 KML 文件。在地标描述中,我有指向我希望用户在浏览器中打开的网页的链接。href 指向一个片段 URL,这意味着它有一个“#”作为分隔符,后跟一个与地标相关的参数。当我查看地标气球时,我看到了可点击的链接,但是当我点击它时,它会将 URL 发送到浏览器,从而切断“#”和后面的参数。但是,如果我右键单击链接,复制链接位置并将其粘贴到浏览器中,它就可以正常工作......不过,我想避免那些额外的步骤。

该链接如下所示:mywebsite/directory#12345678,但它在浏览器中打开时如下所示:mywebsite/directory 不起作用。

通过一些搜索,我看到 # 用于启用飞到功能(见下文)。是否有解决方法或修复方法,以便我可以让谷歌地球将完整的片段 URL 发送到浏览器,而不切断 # 和参数?

——来自谷歌地球开发者小组

通过使用元素指定的其他行为 KML 支持在元素中使用两个属性:href 和 type。

锚元素包含一个指定 URL 的 href 属性。

如果 href 是 KML 文件并且具有 .kml 或 .kmz 文件扩展名,则 Google 地球会在用户单击该文件时直接加载该文件。如果 URL 以 Google 地球未知的扩展名(例如 .html)结尾,则会将 URL 发送到浏览器。

href 可以是片段 URL(即,带有 # 符号后跟 KML 标识符的 URL)。当用户单击包含片段 URL 的链接时,默认情况下,浏览器会飞到 ID 与片段匹配的功能。如果 Feature 具有 LookAt 或 Camera 元素,则从指定的视点查看 Feature。

可以通过将以下三个字符串之一附加到片段 URL 来进一步指定行为:

•;flyto(默认)- 飞向特征 •;balloon - 打开特征的气球,但不飞向特征 •;balloonFlyto - 打开特征的气球并飞向特征

我非常感谢任何想法、建议或解决方法!

4

1 回答 1

0

如果目标 URL“mywebsite/directory”生成一个 HTML 文档,其目标 id 使用适当的锚(例如 1234578)定义,则通常可以通过单击 Google Earth 中的 KML 链接来访问它。

在 KML 中转义 URL 的方式可能存在问题。通过 CDATA 块在功能描述中包装 HTML 有时会有所帮助。

这是 KML 中链接的 URL 中带有“#”的地方,正如您所期望的那样。

KML

<?xml version='1.0'?>
<kml xmlns='http://www.opengis.net/kml/2.2'>
<Placemark>
    <description>
        <![CDATA[
        Visiting a linked resource.
        See <a href="http://www.w3.org/TR/html401/struct/links.html#h-12.1.1">reference</a>
        ]]>
    </description>
</Placemark>
</kml>

目标 HTML links.html

<html>
...
<h3><a name="h-12.1.1">12.1.1</a> Visiting a linked resource</h3>
...
</html>

无论 Web 浏览器配置为 Google 地球的外部还是内部,行为可能会有所不同。在工具/选项/常规菜单中选中/取消选中“在外部浏览器中显示网络结果”选项以查看操作是否更改。

于 2013-09-17T18:05:30.623 回答