离线使用Google Maps V3,例如使用缓存清单?

Ric*_*ard 16 html5 caching google-maps

我正在编写一个HTML5移动应用程序,它使用带有自定义OpenStreetMap图块的Google Maps V3.

OSM tile(from tile.openstreetmap.org)设置为缓存超过24小时,我正在为所有HTML/JS/CSS使用缓存清单.

因此理论上应用程序可以脱机使用,除了Google Maps界面离线时不满意.

它总是想要调用谷歌地图服务器http://maps.google.com/maps/api/js?sensor=false&region=GB- 当失败时,谷歌地图无法加载.

有没有办法离线使用Google Maps V3 API?

我可以缓存 - 显示http://maps.google.com/maps/api/js?sensor=false&region=GB,还是这是一个不好的举动?

(对不起这个相当初学的问题,如果我能解释得更好,请告诉我!)

cro*_*ies 14

谷歌编码员自己已经解决了这个问题,遗憾的是信息传播得不好.但是,是的,您可以使用缓存清单来完成您所描述的内容.

所需读物

  1. 首先来看看Google Code博文:http://googlecode.blogspot.com/2010/04/google-apis-html5-new-era-of-mobile.html
  2. 然后阅读密苏里州立大学自己的帖子:http://blogs.missouristate.edu/web/2010/05/12/google-maps-api-v3-developing-for-mobile-devices/

技术

  • 必须缓存Google地图使用的每个网址
  • 使用方法来对抗Chrome和Firefox顽固的缓存方法,将其从"离线网站"中删除
  • 所有自定义都必须是javascript中的客户端

您的缓存文件看起来像(根据密苏里州):

CACHE MANIFEST
/map/mobile/examples/template.aspx
/map/mobile/examples/template.css
/map/mobile/examples/template.js
NETWORK:
http://maps.gstatic.com/
http://maps.google.com/
http://maps.googleapis.com/
http://mt0.googleapis.com/
http://mt1.googleapis.com/
http://mt2.googleapis.com/
http://mt3.googleapis.com/
http://khm0.googleapis.com/
http://khm1.googleapis.com/
http://cbk0.googleapis.com/
http://cbk1.googleapis.com/
http://www.google-analytics.com/
http://gg.google.com/
Run Code Online (Sandbox Code Playgroud)

注意事项

您需要完全基于HTML5,并认识到这将对您的用户产生的影响.这种情况很方便,您的用户在浏览器标准/设备上是最新的,或者您可以控制用户选择.

希望这可以帮助.


Alu*_*mni 0

http://maps.google.com/maps/api/js?sensor=falseCACHE的部分中cache.manifest,以及我的应用程序文件,没有任何问题。

尽管如此,我相信您还必须缓存 Google Maps API 请求的其他文件。您可以查看您的应用程序下载的文件并将其包含在内。