下载/缓存谷歌地图以离线使用

19
我希望能在Android应用程序中实现此功能,并认为最新的Google Maps API发布可以实现,但是我没有看到太多关于这个主题的讨论。理想情况下,您应该能够下载/缓存某个区域的地图以供以后离线使用。是否只能通过Google Maps 5应用程序而不是API来完成这项操作,以避免违反《服务条款》? 我知道OpenStreetMap和其他地图允许这样做,但我相信Google Maps仍然提供卓越的地图和最广泛的使用。

预先感谢您的帮助。


4
我投票关闭此问题,因为有关法律问题的问题不属于 SO 的主题范围。 - Cerbrus
5个回答

20

下载和缓存Google Maps资产违反了Google Maps API的TOS

请查看第8节TOS

许可限制。除非在条款下明确允许,或者您已经获得Google(或适用情况下特定内容提供商)的事先书面授权,否则在本节8的所有限制下,授予您的许可受限于您遵守本节8的所有限制。根据本节8,您不得(也不得允许任何其他人):

8.2.复制、翻译、修改、创建派生作品、预取、缓存或公开显示任何内容或其中的任何部分。


13

如果不违反服务条款,是否只能通过Google地图5应用程序而不能通过API实现这一点?

是的,尽管据我所知,使用API甚至在物理上也不可能实现。


2
谢谢,这正是我所想的,因为没有人谈论它。 - Matt
今天的更新是否改变了这一点?我知道地图应用程序中提供了离线下载功能,但是我还没有在API文档中看到相关内容。 - Hal
1
@harrison_m:如果你所说的“今天的更新”是指地图应用程序的离线缓存功能已经从实验室菜单中移除,那么不,这不会影响MapView - CommonsWare
1
@CommonsWare,使用地图API V2可以吗? - Rajnikant

11

有第三方地图API可以实现这一功能,比如Nutiteq maps SDK。不过不能使用Google Maps,因为那违反了他们的服务条款,但可以使用Bing(需要企业许可证)、OpenStreetMap(免费)或其他地图数据源。

声明:我是它的开发者。


1
谢谢,我已经在使用你们的SDK了,它非常棒!虽然我在缓存地图资产(地点)方面遇到了一些问题。我可以很好地缓存/加载瓷砖,但似乎无法缓存任何添加的功能。这是可能的吗? - Matt
1
我们刚刚为离线POI处理创建了改进的解决方案(数据库中的数据+空间索引文件+聚类)。如果您有兴趣,请联系nutiteq.com/forum或support@nutiteq.com - JaakL

0

根据this 10.1.3(b)的规定,您可以在移动设备上暂时执行此操作。

这个项目已经实现了它,我无法提供具体的例子,但是你可以深入研究一下,因为它是开源的。


0
您可以尝试使用来自http://www.blueblackworks.com的GoogleMapsRipper 2.0.4。
GoogleMapsRipper是一款地图软件,允许您从Google Maps、Bing Maps和OpenStreet Maps下载卫星图像、地形图和道路地图。

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