如何缓存Google地图图块以供离线使用?

时间:2011-05-24 10:59:15

标签: caching google-maps

就像诺基亚的OVI地图可以离线使用一样,必须有一些方法来缓存谷歌地图图块。任何提示?

7 个答案:

答案 0 :(得分:40)

如果您尝试缓存Google所服务的磁贴,则可能违反了Google的服务条款(在某些情况下,如果您已购买其企业Maps API Premier)。这就是gmapcatcher将它从列表中划掉的原因。请参阅http://code.google.com/p/gmapcatcher/issues/detail?id=210

在上面的gmapcatcher网址中,您还会找到一个可以下载图块的shell脚本(或者作者说的那样)。

还有其他项目试图让谷歌地图脱机使用:

http://code.google.com/p/ogmaps/

http://code.google.com/p/gmapoffline/

最后,如果Google地球可以满足您的需求,那么您可以使用它。根据{{​​3}},Google地球的离线使用需要Google地球企业版许可。

请注意,上一页还说:“您不得从Google地图或地球中删除或以其他方式导出内容,也不得将其保存以供离线使用。”因此,如果您尝试缓存切片,那么几乎可以肯定(无论如何,谷歌)违反了服务条款。

答案 1 :(得分:21)

不幸的是,我发现这个链接似乎表明我们无法在本地缓存这些链接,因此这个问题没有实际意义。

http://support.google.com/enterprise/doc/gme/terms/maps_purchase_agreement.html

  

4.4缓存限制。 客户可能预取,检索,缓存,索引或存储任何内容,或部分服务,但客户可能会存储有限数量的内容仅用于提高由于网络延迟而导致的客户实施的性能,并且仅在客户临时,安全且以(a)不允许在服务之外使用内容的方式这样做时; (b)仅基于会话(一旦浏览器关闭,禁止任何额外存储); (c)不操纵或汇总任何内容或部分服务; (d)不会阻止Google准确跟踪网页浏览量; (e)不以任何方式修改或调整归属。

因此,我们似乎无法合法地离线使用Google地图图块。

答案 2 :(得分:14)

更新

我在Google地图中找到了使用条款:

第10.5节

  

没有缓存或存储空间。您不会预取,缓存,索引或存储   除了您可以存储的内容之外,在服务之外使用的任何内容   有限数量的内容仅用于改善目的   由于网络延迟,您的Maps API实施的性能   (而不是为了阻止Google准确跟踪   用法),并且只有当这样的存储:是临时的(并且在任何情况下都不是   超过30个日历日);是安全的;不操纵或聚合   内容或服务的任何部分;并且不会修改属性   无论如何。

这意味着我们可以在有限的时间内缓存

答案 3 :(得分:3)

http://www.google.com/earth/media/licensing.html上有一个“移动”部分,其中包含:

与我们的在线条款类似,如果您使用我们的API或移动设备的原生Google地图实施(例如在Android手机或iPhone上),则无需特殊许可,但您必须始终保持Google名称可见。 永远不允许离线缓存我们的内容。

答案 4 :(得分:1)

您想要使用空间索引。它将2d复杂度降低到1d复杂度,并在许多映射应用程序中使用。你可以在phpclasses.org下载我的php类hilbert曲线。 z曲线更容易。将x和y坐标转换为二进制,然后将两个值连接起来。上限是最显着的位。然后使用磁带上的文件夹结构的四边形,例如:1/2/3 // 4是第一级磁贴的路径。

答案 5 :(得分:1)

您可以使用Open Street Map:您会发现许多不同的图层和地图类型,这是完全免费的。您可以下载所需的所有地图图块。当然,任何人都可以增强地图,它会显示比Google地图更多的信息。 如果您需要帮助,可以询问社区也非常活跃。

答案 6 :(得分:0)

在Android平台上,Oruxmaps(http://www.oruxmaps.com)在缓存所有WMS源方面做得非常出色。它在游戏商店有售。 我每天都在偏远地区使用它,没有任何连接,就像一个魅力。