默认情况下,可以在Google地球中显示带有时间戳的所有地标吗?

Ste*_*bbi 6 timestamp kml google-earth

我正在寻找使用Timestamp元素创建KML地标.这本身很容易做到,但我不喜欢Google Earth的行为只显示最初加载KML时的一小段时间.我希望它默认显示整个时间范围(以及所有地标).

有没有办法做到这一点?我没有在Google地球中看到任何设置,也没有看到KML文档中的任何设置.

我正在考虑的一个替代方案是基本上复制每个地标,并且在单独的文件夹中有1个设置有时间戳,1个没有.文件夹将使用单选按钮选择功能.如果可能的话,我想避免这种情况,因为KML可能有数千个地标,并且复制节点似乎是浪费.

以下是来自此源代码示例,如果您想要查看我所说的行为,那么KML会带有地标.

更新:我看到的时间滑块没有默认为包含的KML地标的完整范围的行为似乎是因为文件通过网络链接加载到本地文件.在这种情况下,我不确定如何控制时间滑块的行为.我可以让链接做一个"飞到查看刷新",它正确设置时间滑块,但我不想将相机移动到纬度/经度,因为我每4秒刷新一次.

Jas*_*nM1 7

默认情况下,Google地球会显示KML的全部时间.但是,常见的情况是打开/显示多个KML文件的时间默认情况下,Google地球会显示所有 KML功能中最早和最晚时间的全部时间范围.此外,通过NetworkLinks加载KML 并不会像在Google地球中直接打开它那样显示完整的时间范围.

为了说明首先取消选中已保存的位置以禁用其他KML,然后加载此KML文件.您会注意到时间线显示1787到1959年的全部范围.https://developers.google.com/kml/documentation/us_states.kml

如果要预定义时间范围,可以显式添加限制时间视图的CameraLookAt.例如,要将视图约束到前100年,您可以将<gx:TimeSpan>具有年份范围的元素添加到KML中的根级元素.请记住包含lat/lon/range元素,否则视图将默认为lat = 0,lon = 0,range = 0.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
<Document>
    ....
    <LookAt>
            <gx:TimeSpan>
                    <begin>1787</begin>
                    <end>1887</end>
            </gx:TimeSpan>
            <longitude>-95.71</longitude>
            <latitude>37.09</latitude>
            <range>4119625</range>
            ...
    </LookAt>
    ...
</Document>
</kml>
Run Code Online (Sandbox Code Playgroud)

如果您在地标或文件夹上单击鼠标右键,然后在Google地球中选择"快照视图"并显示计时器滑块,则会在保存的视图中捕获时间范围.

因此,您可以执行您想要的操作,而无需使用时间重复地标,而是创建一些仅使用受时间范围约束的视图定义的地标.单击这些特殊地标中的每一个都会将时间滑块更改为您想要显示的任何时间范围.

通过Networklinks检索的KML功能具有不同的行为,并且在时间滑块中仅预选了一部分时间范围.您必须将flyToView添加到NetworkLink,以使其行为与直接加载KML相同.

<NetworkLink>
  <flyToView>1</flyToView>
  <Link>
    <href>...</href>
  </Link>
</NetworkLink>
Run Code Online (Sandbox Code Playgroud)

如果您在父KML文件中包含多个具有基于时间的功能的NetworkLink,那么最佳做法是<TimeSpan>向NetworkLinks 添加一个元素,包括该功能集合的全部时间,否则Google Earth将在启动时自动加载整个文件.

<NetworkLink>
  <TimeSpan>
    <begin>1787</begin>
    <end>1887</end>
  </TimeSpan>
  <flyToView>1</flyToView>
  <Link>
    <href>...</href>
  </Link>
</NetworkLink>
Run Code Online (Sandbox Code Playgroud)

参考:
https://developers.google.com/kml/documentation/kmlreference#timespan
https://developers.google.com/kml/documentation/kmlreference#gxtimespan