我正在为 iPad 构建一个 HTML5 应用程序,它将包含一个用于基本上下文信息的地图。我需要一些方法来有选择地离线缓存地图(即我要去一个我知道没有连接的区域,所以让我事先缓存地图的那部分)。
或者,我可以从它们的 WebSQL 存储库中渲染矢量图层,在这种情况下,我将如何将地图转换为矢量并在平移地图中显示这些矢量(即在矢量图层之间交换或添加矢量层)
提前致谢
我正在为 iPad 构建一个 HTML5 应用程序,它将包含一个用于基本上下文信息的地图。我需要一些方法来有选择地离线缓存地图(即我要去一个我知道没有连接的区域,所以让我事先缓存地图的那部分)。
或者,我可以从它们的 WebSQL 存储库中渲染矢量图层,在这种情况下,我将如何将地图转换为矢量并在平移地图中显示这些矢量(即在矢量图层之间交换或添加矢量层)
提前致谢
我知道在 2 月份的 OpenLayers Mobile Codesprint 期间,有些人正在尝试本地存储支持。这是他们所取得的成就的一个例子。我建议您检查jgrocha 的沙箱,看看他们所做的是否适合您的需求。
看起来 touchMapLite 有一些离线缓存功能。我还没有深入了解它的工作情况(或是否),但您可以在代码中看到填充和检索缓存地图图块的示例
我已经使用 cloudmade tms 层一起完成了这项工作,并从 openlayers 沙箱中获得了一些灵感。
简而言之,您必须将层的 async 属性设置为 true 并为该层提供 getURLasync 方法。在这种方法中,您可以检查图层是否在本地存储/网络数据库中,否则可以从网络加载图块。
getURLasync 方法将图像作为属性,用户可以将其转换为 dataurl 字符串,如果离线缓存中不存在切片,则需要该字符串来存储切片。
你可以在这里找到一些示例代码:http: //allartk.nl/content/html5-offline-mapping
我使用了一个名为 OffMaps 的 ipod touch 应用程序。它会缓存您直接在 ipod 上看到的所有内容,然后您可以稍后在没有 wifi 时使用地图程序,并且这些图块仍然存在。不知道他们是怎么做到的,但事实证明这是可能的。