如何在默认的谷歌地图上添加叠加地图?

3
从一开始就要明确,我从未在任何项目中使用过Google地图,所以对此了解甚少。此外,我在SO上找到了一些关于Google地图的帖子,但我不确定这些是否真正有助于我的情况。
我想做的是在已有的Google地图上方添加另一个地图。新的覆盖地图将具有某种程度的透明度,以便原始的Google地图也可见。类似于这样:http://crf.casa.ucl.ac.uk/screenRoute.aspx?s=386&d=105&w=False 我该如何做?应该查看哪些技术?我是Java开发人员,但任何语言的答案都会非常有帮助。
3个回答

2

我建议下载开源工具MapTiler(适用于Windows和Mac OS X)。

您需要使用GMapType对象来定义自己的自定义地图。MapTiler将为您自动执行平铺过程,并且一旦平铺过程完成,它将生成一个简单的HTML查看器。它还包括一个自定义控件,可将覆盖层的不透明度从0更改为100%。

自定义地图瓷砖覆盖层是Google Maps API中相当高级的主题(即使文档也会在红色警告中提醒您)。但是,我相信您将能够使用并理解MapTiler的可交付HTML查看器。

以下是MapTiler能够生成的示例(请注意右上角的不透明度滑块):


这是一个非常好的解决方案。但我更喜欢使用动态代码来完成,因为我没有一个静态地图想要用作叠加层,而它的时间也不同。 - Alex Ntousias
动态地完成这个过程是相当复杂的。您需要找到一种方法来定义和动态平铺您的覆盖层为256x256个瓦片,并根据当前坐标显示相关的瓦片在地图上,还需要确定如何引用和显示瓦片图像。另外请注意,MapTiler在我的iMac MB419上为所有缩放级别平铺400平方公里的自定义地图大约需要几个小时的时间。 - Daniel Vassallo
显然,一个选项是检查MapTiler源代码,看看是否可以将切片算法适应于您的应用程序。 - Daniel Vassallo

1

这取决于覆盖层需要多么详细/大。如果您需要能够缩放到非常详细的覆盖层,则MapTiler非常棒,但如果您的覆盖层不需要那么巨大,我建议使用GGroundOverlay(V3中的GroundOverlay)。它很容易动态更改。这是Google的演示

至于MapTiler - 如果您有一组要动态更改的覆盖层,可以为所有覆盖层生成瓦片,然后轻松地在它们之间切换。但如果您正在动态创建覆盖层,则可能需要实现瓦片服务器。请查看MapnikTileCache


我认为GGroundOverlay会满足我的需求!实际上,这是我的错,因为我没有以正确的方式表达问题,让你完全理解我想要什么。我想创建一种在真实地图上玩的游戏,所以我想在现有的Google地图上显示一些房屋、城堡等等。如果您有任何其他建议,请与我分享。谢谢 :) - Alex Ntousias
2
演示链接已经失效。 - metasequoia

0
我推荐另一个简单的解决方案:OpenLayers。

See: http://openlayers.org/dev/examples/

筛选 "google",在新窗口打开链接,看看代码有多简单。

OpenLayers 是 JavaScript API(可以代替 Google 的 API),但它可以使用许多层。你可以混合:

  • 谷歌地图
  • 矢量对象
  • 光栅图像
  • WMS 对象 - GeoServer、MapServer、Mapnik 瓦片(例如 OpenStreetMap 的瓦片)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接