我有一个 GUI 应用程序的想法,但是它需要一组我不经常使用的技术(因此我在这里有点新手,如果这很愚蠢,请道歉!)。
我想要一个 3D 地球模型(如谷歌地球,实际外观就像谷歌地图中的地形覆盖(我不关心道路,只关心高度和位置))。就像谷歌地图和谷歌地球一样,我希望添加我的自定义轨道、位置和边界;并移动/平移/倾斜等...
但是我无法持续连接到互联网。因此,在启动程序之前,我需要下载 1 次地形/地理数据。 (这可以作为单个 kml 数据集来完成吗?(这是否正确?)我想我需要一个“本地 map 服务器”而不是互联网连接?)
我需要使用预编译语言(最好是 java)来实际编写程序。(不接受脚本/Javascript)我可以使用现有库连接 Java 和 KML 吗?
是否可以在第三方软件中使用地形成像重现谷歌地图“ map 窗口”? (我可以从某个地方的开源中获取这个吗?)
最佳答案
你想做的一切都是可能的 - 然而 - 让我先说这将是一个漫长而艰难的旅程。
让我们从简单的事情开始:您可以将数据加载为 KML,它将在 Google 地球中显示为图层,并且您可以将其打开和关闭。您还可以通过编程或 GUI 关闭默认图层(道路等)。
我会使用与 C# 应用程序绑定(bind)的 Google Earth(网络插件)。您不想使用旧的Google Earth COM API。从 GE 6 开始,它就被 Google 弃用了,而且使用起来确实很糟糕。 Java 也可以,但我更喜欢 C# 开发。无论哪种情况,您都可以使用该语言的功能直接调用 Google Earth API。
这是一个很好的示例 (C#)。它是 GNU/GPL,因此它可以作为您的应用程序的基础:
http://code.google.com/p/winforms-geplugin-control-library/
本质上,您在 WebBrowser 控件中加载 Google 地球网页,这样您就可以直接管理它。实际上,与网页交互是最困难的部分(但仍然比 COM API 更容易!)——希望您可以使用上面链接的控件库来感受它的工作原理。
至于您的互联网连接问题:是的 - Google 地球(甚至网络插件)支持缓存。允许的确切缓存量约为 100 MB。缓存中到底存放了什么完全是个谜。 100MB 的限制不会让您走得太远,但您可以使用完整的 Google 地球应用程序创建更大的缓存(最多 2GB)。这些缓存与网络浏览器插件一起使用,您只需将数据库文件复制到 Google Earth 应用程序数据目录中(并重命名该文件,我认为该插件会在文件名后附加 0 或其他内容。)缓存很简单——以您想要的高度围绕相关区域飞行。有一些工具可以帮助自动化此操作,例如:
http://bx11.110mb.com/gecacher.htm
请注意,缓存 Google 的数据并不完全是他们希望您做的事情。因此,请记住,您需要全面阅读 EULA,以确保您没有违反它...
祝你好运!我在 GE 的一个大型应用程序中工作了大约 3 年;这绝对是一件有趣的事情,并且可以让您的应用程序真正脱颖而出。
关于java - 应用技术集所需的建议/建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9892404/