OpenLayers 3可以使用WebSQL或IndexedDB来缓存映射瓦片吗
Can OpenLayers 3 use WebSQL or IndexedDB to cache map tiles
我使用的是OpenLayers 3,我看到的所有离线示例都只包括用于保存和检索地图瓦片的localStorage。问题是localStorage被限制在大约5兆字节,对于我的应用程序来说太小了。
如果我使用的是Leaflet,我可以通过在getTileUrl函数中编写自己的自定义存储解决方案来扩展L.TileLayer。
在OpenLayers 3中有合适的东西吗?我真的很想在localStorage上使用IndexedDb甚至WebSQL。
在OpenLayers 3中,您可以使用自定义tileLoadFunction配置tile层源,以实现您自己的存储解决方案:
new WhateverTileSource({
tileLoadFunction: function(imageTile, src) {
var imgElement = imageTile.getImage();
// check if image data for src is stored in your cache
if (inCache) {
imgElement.src = imgDataUriFromCache;
} else {
imgElement.onload = function() {
// store image data in cache if you want to
}
imgElement.src = src;
}
}
});
map.geo.admin.ch的瑞士联邦通信,在移动设备上提供离线支持。该应用程序使用的代码是开源的,托管在github(github.com/geoadmin/mf-loadmin3)上。对于其存储功能,它使用mozilla的localforge库混合使用localstorage、IndexDB和WebSQL。
map.geo.admin.ch的存储实现是作为angularJS服务提供的。它在离线服务中用于下载和存储所需的磁贴。然后,您可以简单地使用Andreas的tileLoadFunction来重定向从存储中加载瓦片。这也可以在离线服务中找到。
根据浏览器的不同,大小方面的限制仍然存在。有关详细信息,请参阅当地饲料文件。
注意:我没有足够的因果报应发布2个以上的链接。谷歌应该提供帮助。
相关文章:
- 如何在映射数组中添加换行符
- ng映射方向备选方案
- 无法通过数组映射绑定
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 如何在从浏览缓存加载页面时执行javascript
- ReactJS和SpringDataRest缓存问题可能与websocket有关
- 使用Scala Play Framework视图中的键检索映射值
- 缓存谷歌地图数据
- 淘汰映射;不起作用
- 防止jQuery Mobile中的ajax缓存
- image.onload事件和浏览器缓存
- 映射数组ES6时考虑空值
- Lodash映射并返回唯一
- Javascript清除缓存以清除基本身份验证凭据
- 使用jquery.load('pageName')方法时,未从应用程序缓存加载Html页
- 将脚本缓存到本地存储的basket.js概念仍然是一个好主意吗
- 阻止选项卡缓存jquery ui
- 强制浏览器更新缓存的HTML5视频对象
- 这些缓存.js和编译映射文件是什么
- OpenLayers 3可以使用WebSQL或IndexedDB来缓存映射瓦片吗