【问题标题】:How do you send KML to Google-Earth running locally?如何将 KML 发送到本地运行的 Google-Earth?
【发布时间】:2019-03-07 08:39:32
【问题描述】:

(背景:我了解什么是 KML。我可以手动创建自己的 KML(例如使用文本编辑器)或为自己的目的编辑 KML 示例。我找到了一个为我生成 KML 的库,名为JAK。所以我知道如何创建我需要的 KML 对象。

我在网上搜索过,但似乎找不到任何关于如何在本地运行时将 KML 对象推送到 Google-Earth 上的信息。网上的大部分信息都在谈论在浏览器中运行的谷歌地球。)


我有一个 Java 应用程序,它每 x 秒生成一个 KML 对象。在生成 KML 对象时,我需要将每个 KML 对象推送到 Google-Earth 上。 如何使用 Java 将 KML 对象推送到本地运行的 Google-Earth 上?

【问题讨论】:

    标签: java kml google-earth


    【解决方案1】:

    为您的文件生成一个带有 NetworkLink 的 KML,并让该 NetworkLink 每 X 秒刷新一次。这将允许在 GE 中自动刷新。

    然后,只需让您的流程定期在适当的位置生成新的 KML。

    【讨论】:

    • 所以我会创建一个 KML 并在谷歌地球中手动加载该 KML。然后以某种方式加载的 KML 会告诉谷歌地球每 x 秒刷新一次? (同时我将更新网络链接指向的 KML)
    • 我看到有一些关于“网络链接”的信息位于:code.google.com/apis/kml/documentation/… --> URL 上的 python 示例代码似乎与您所说的相似。每次谷歌地球更新网络链接......谷歌地球会删除旧的地标并绘制新的地标吗?还是会保留旧的地标并绘制新的地标?
    • 网页显示“每次刷新网络链接”...这是否意味着谷歌地球不会每 x 秒自动刷新一次? (我肯定需要谷歌地球来自动刷新)
    • 你设置了 refreshMode 和 refreshInterval。有关更多信息,请参阅code.google.com/apis/kml/documentation/kmlreference.html#link。如果您将模式设置为 onInterval,它将按照您的指定每 x 秒刷新一次。
    【解决方案2】:

    您可以先将 KML 对象保存为临时 KML 文件,然后以 KML 文件作为参数启动 Google 地球:-

    Runtime.getRuntime().exec(new String[] {
            "C:/Program Files/Google/Google Earth/googleearth.exe",
            "C:/myfiles/Test.kml"
    });
    

    我测试了它,它对我有用。

    【讨论】:

    • 这会让我在谷歌地球开放时将一公里推到谷歌地球。开始后我需要将许多 kmls 推送到谷歌地球。
    • @limc 我可以知道如何在网站上运行相同的内容,我想在谷歌地球中打开 kml,用户点击链接。 stackoverflow.com/questions/16342733/…
    【解决方案3】:

    https://github.com/ChrisStayte/ArcMap_To_Google_Earth查看 Chris Stayte 的代码

    他按照 JonnyO 的建议做,但在 C# 中并在与 ArcMap 同步的上下文中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多