我有使用开放层2的缓存写入和读取代码,现在我正在升级我们的开放层3。请帮忙
答案 0 :(得分:1)
OpenLayers 3使用不同的方法。您可以为切片图层配置自定义tileLoadFunction
:您可以直接在src
上设置Image
,而不是在首选存储中查找网址(LocalStorage,IndexDB,... ),并在可用时获取它,或者如果你想存储它。
这样的事情:
new ol.source.TileImage({
tileLoadFunction: function(tile, src) {
// try to fetch from local storage
var dataURI = localStorage.getItem(src);
if (dataURI) {
// use cached version
tile.getImage().src = dataURI;
} else {
// load image data
var client = new XMLHttpRequest();
client.open('GET', src);
client.onload(function() {
var data = 'data:image/png;base64,' +
btoa(unescape(encodeURIComponent(this.responseText));
// use the image data we just loaded
tile.getImage().src = data;
// save image data to the cache for later reuse
localStorage.setItem(src, data);
});
client.send();
}
}
// ...
});