java - 应用技术集所需的建议/建议

标签 java google-maps kml recommendation-engine google-earth

我有一个 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/

相关文章:

java - 在 Activity 中的可运行状态中调用 setAdapter 引发 NullPointerException

android - 指定航路点时,Direction API 仅返回一条路线

数据库设计、谷歌地图和地址字段

c# - 如何在 ASP.NET 中生成 KML 文件?

javascript - KMZ 文件会加载到 Google 地球,但不会加载到 Google map

java - 未设置 Autowiring 属性

java - 如何使用 Android 的 AsyncTask 通过 JSoup 获取我的所有数据,然后将该信息发送到另一个类?

java - 多个持久的听众。他们同时工作吗?

typescript - 类型 'CustomMap' 缺少类型 'Map<Element>' 的以下属性

javascript - 重新加载页面时 Kml 图层不更新