【问题标题】:How to get google earth to display all placemarks in a large kml file如何让谷歌地球在大型 kml 文件中显示所有地标
【发布时间】:2013-02-16 10:30:41
【问题描述】:

我创建了一个可以在 google earth 中播放的 kml 文件。在播放过程中,地标在文件播放完成之前停止出现。它是每 0.1 秒 8 小时内移动车辆的地标,最高可达 294,000。 有没有办法让谷歌地球在这样的大文件中显示所有地点标记?

提前感谢您的帮助。

【问题讨论】:

  • 使用极其简单的 png 文件来显示地标。只是一两个点。使用 StyleUrl 而不是重复样式数千次。或者,根据文件的性质,您可以通过使用镶嵌线而不是一系列跟踪点来获得难以置信的节省。我编写了一个程序来简化我的 kml 文件。它们并不大,但数量众多,因此作为一个群体,它们的绘制速度很慢。您可以通过向 KmlFixer@Gmail.com 发送主题行中包含 kml 的电子邮件来运行我的免费程序。您将收到带有路线的自动回复。使用起来非常简单。

标签: kml google-earth


【解决方案1】:

您最多可以同时显示 294K 地标,但如此大的 KML 文件通常会导致性能问题,有时还会导致呈现问题。

test KML generator 中,加载具有 500K 地标的单个 KML 文件时存在严重问题。具有 100K 地标的类似测试有很长的启动延迟(约 2 分钟),但之后运行顺利。这些数字提供了单个 KML 文件中要素限制的粗略顺序。

建议将地标分解为 1 小时的块,然后使用 network links 使用父 KML 文件加载所有块。每个 NetworkLink 都应该有一个 TimeSpan 用于其各自的时间段。然后只有处于活动状态的段将被加载和显示。如果性能仍然是一个问题,那么可以分成更小的块。

根 KML 如下所示:

<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
    <name>Parent Document</name>
    <open>1</open>

    <NetworkLink>
      <name>Group #1</name>
      <TimeSpan>
            <begin>2012-08-12T01:00:00Z</begin>
            <end>2012-08-12T01:59:59Z</end>
      </TimeSpan>
      <Link>
        <href>group_0100.kml</href>
      </Link>
    </NetworkLink>

    <NetworkLink>
      <name>Group #2</name>
      <TimeSpan>
            <begin>2012-08-12T02:00:00Z</begin>
            <end>2012-08-12T02:59:59Z</end>
      </TimeSpan>
      <Link>
        <href>group_0200.kml</href>
      </Link>
    </NetworkLink>
    ...
</Document>
</kml>

【讨论】:

  • 我使用谷歌外卖作为我的位置历史记录,结果是 383K 点。谷歌地球完全断断续续。我尝试了 NetworkLink,但 Google 地球仍然尝试一次加载所有这些。有什么办法可以发出信号吗?
  • 我在FolderNetworkLink 节点上使用&lt;visibility&gt;0&lt;/visibility&gt; 修复了它。仅仅隐藏 Folder 节点是行不通的。
  • @ubershmekel - 子功能不会从其父文件夹继承可见性,如 KML 规范中所述。如果不使用时间范围,则必须为每个 NetworkLink 添加可见性 0 以使其默认不加载。此处列出的错误:code.google.com/p/earth-issues/issues/detail?id=435
猜你喜欢
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多