谷歌离线地图:不是瓷砖而是javascript

Posted

技术标签:

【中文标题】谷歌离线地图:不是瓷砖而是javascript【英文标题】:google maps offline: not tiles but javascript 【发布时间】:2013-05-27 10:32:35 【问题描述】:

我有一个 html (phonegap) 应用程序,它使用 Google Maps API 来显示带有标记的地图。我希望这个应用程序可以离线使用。我知道谷歌地图图块不能离线使用(因为它的许可证)。但是,我想要做的是使用没有瓷砖的地图界面。

在线时 -> 显示图块和标记。

离线时 -> 只显示标记。

但是,谷歌地图的js加载比较复杂,我还没有设法缓存。

谢谢。

【问题讨论】:

【参考方案1】:

缓存 google maps javascript 不允许,这是因为他们的支付系统是基于用户加载他们的 javascript API 的次数。一次页面刷新相当于一次 google maps API 调用,根据您签订的合同类型,您在购买的 API 请求总数中损失了 -1。

如何跟踪和报告 Google Maps API for Business 的使用情况?

将 Google Maps JavaScript API 单次加载到页面中。这 每次使用该 API 的页面时,都会重新加载 JavaScript API 重新加载。用户与地图的交互(例如平移、缩放、 更改地图类型)不会产生更多的页面浏览量。但请注意 如果将 API 加载到页面中,则会生成页面视图,即使 该 API 不用于显示地图。

见https://developers.google.com/maps/documentation/business/faq#pageview

您当然可以联系谷歌并尝试根据您的需求寻求一些量身定制的业务解决方案。如果您直接与他们联系,我不能 100% 确定他们提供什么样的东西。但是,尽管您的请求有些无法满足,因为这些 UI 生成代码也位于您需要的 google maps API javascript 中。

所以我建议如果你只需要离线时的谷歌地图界面,花点时间用 HTML/CSS/(和一些 JS)实现类似的东西。你可以在画布上绘制标记或使用普通的 img 和定位。如果您需要实现拖动和缩放 - 使用画布或其他一些技术会更困难但并非不可能。但话虽如此,让应用程序保持在线会更容易,我们都有互联网 :) ?考虑到谷歌地图 UI 也会随着时间的推移而发生变化,就像在他们即将推出的版本中一样,制作 1 对 1 匹配的虚拟离线 UI 与谷歌地图将是一个非常痛苦的过程。

【讨论】:

【参考方案2】:

您可以改用 OpenStreetMaps,它可以离线使用:http://wiki.openstreetmap.org/wiki/Offline_Openstreetmap

【讨论】:

以上是关于谷歌离线地图:不是瓷砖而是javascript的主要内容,如果未能解决你的问题,请参考以下文章

如何发布谷歌离线地图

谷歌离线地图开源地图服务器

如何使用Openlayers 3加载谷歌离线地图

如何使用Openlayers 3加载谷歌离线地图

leaflet.js加载谷歌离线地图

leaflet.js加载谷歌离线地图