我不确定是在此处还是在Stackoverflow上发布此消息,因为它有点像交叉。让我尝试一下。

在建议的HTML5标准中,可以选择使用缓存清单将Web应用程序数据存储在本地缓存中。我希望将这种技术用于离线平铺的Web地图应用程序,并在此处基于标准安装的Geoserver做了一个快速原型。

我只是撕开了从默认图层之一生成的OpenLayers客户端页面,并将<html>标记更改为

<html xmlns="http://www.w3.org/1999/xhtml" manifest="cache.manifest">


并创建了仅读取内容的文件cache.manifest

CACHE MANIFEST
http://lima.schaaltreinen.nl:8080/


在我对此事的有限理解中,应该在本地缓存从该URL加载的所有内容:所有磁贴和OpenLayers JS。实际上,在Firefox中首次调用时,它的确要求我允许本地存储,但是当我单击“刷新”(联机或脱机)时,页面嘶哑,表明未定义OpenLayers对象。看起来它尚未加载OpenLayers JS。或提示如何进一步调查?

#1 楼

您可能对Stick and MapBox iPad上的Maps项目感兴趣。 (免责声明:设计了前者,后者参与其中。但是,两者都是BSD许可的,而称为“ .mbtiles”的底层图块格式是基于SQL的。)离线OpenLayers地图。使用便携式数据库/服务器而不是客户端存储的主要原因是,使用浏览器作为大型数据存储尚不完善,并且填充和索引高速缓存可能会非常昂贵。

评论


有趣的解决方案,不是我在想的,但看起来可行。将MapBox /地图加载到带有自定义图块图层的Stick上有多难?

– mvexel
2011年1月12日19:41

它相对简单:有一些工具-基于C的导入器(github.com/developmentseed/mb_tiles_importer),输出mbtile的gdal2tiles版本(github.com/developmentseed/gdal2mb)和即将推出的GUI工具。

– tmcw
2011年1月26日下午14:18

#2 楼

认为您需要在“本地主机”上创建自己的tile缓存,请参见http://code.google.com/p/cumberland/wiki/TilePyramiderAndOpenLayers

示例

    Using vmap
    http://localhost:8081/vmap0/levelzero/0/0.png
    The tile near the middle of the tile set in the third zoom level of vmap0.
    http://localhost:8081/vmap0/leveltwo/3/4.png
    The tile near the middle of the tile set in the fifth zoom level of landsat2000.
    hhttp://localhost:8081/vmap0/landsat2000/1/8500/8500.png
Source:
    The tile at the origin of the tile set in the first zoom level of basemap.
    http://www.osgeo.org/services/basemap/L1/0/0.png


注意:不能有空格

评论


这很有用,但是需要一个本地Web服务器,这可能并不总是可行的,例如当您希望它在iPhone / iPad上运行时。总的来说,我希望在客户端上实现这一目标,而不需要精通HTML5 /缓存清单的网络浏览器。

– mvexel
2010-11-15在11:03

whatwg.org/specs/web-apps/current-work/multipage/offline.html

– Mapperz♦
2010-11-15在15:03

我已经在原始问题中链接到该页面。我知道这是要走的路,但是我试图找出它是否完全可行。

– mvexel
10 Nov 16'在8:23

#3 楼

关于此的文章似乎显示了一种复杂性:


请注意,清单文件的MIME类型是text / cache-manifest。


这些示例似乎都列出了要缓存的特定文件(但我可能需要进一步阅读)。

评论


这是我不清楚的一件事:是需要将特定的具体URL列入白名单,还是可以使用URL前缀。我还无法测试。有谁吗?

– mvexel
2010年11月15日11:00

#4 楼

也许是另一种方法:Geopublisher http://www.geopublishing.org/可以发布地图供离线使用。 Geopublisher是一个桌面软件,可让您将矢量和栅格数据连接在一起并创建数字地图。然后,您可以将此地图导出为独立的Java应用程序。它甚至可以创建自动启动文件等,并且不需要在目标计算机上安装Java。

UPDATE 2018:不再积极开发Geopublisher。

评论


注意:即使该网址是网站的英语版本,该目的地仍是德语。要解决此问题,请在左侧导航栏中找到[english]链接。

–马特·威尔基
2012年3月28日在17:59