Openlayers 开放层3是否具有与开放层2类似的OL.Control.CacheWrite,如果在我们预期开放层3中可用时它现在不可用

Openlayers 开放层3是否具有与开放层2类似的OL.Control.CacheWrite,如果在我们预期开放层3中可用时它现在不可用,openlayers,openlayers-3,Openlayers,Openlayers 3,我有使用开放层2的缓存写和读代码,现在我正在升级开放层3。请帮助OpenLayers 3使用不同的方法。您可以为平铺层配置自定义的tileLoadFunction:不必直接在图像上设置src,您可以在首选存储(LocalStorage,IndexDB,…)中查找url,并在可用时提取它,或者在需要时存储它 大概是这样的: new ol.source.TileImage({ tileLoadFunction: function(tile, src) { // try to fetch

我有使用开放层2的缓存写和读代码,现在我正在升级开放层3。请帮助

OpenLayers 3使用不同的方法。您可以为平铺层配置自定义的
tileLoadFunction
:不必直接在
图像上设置
src
,您可以在首选存储(LocalStorage,IndexDB,…)中查找url,并在可用时提取它,或者在需要时存储它

大概是这样的:

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();
    }
  }
  // ...
});

实际上,我们正在构建一个混合应用程序,并致力于添加离线磁贴加载功能。如何在移动设备中访问本地磁贴。我们计划从SD卡加载本地磁贴。开放层SRc需要服务地址。您可以在
localStorage
上使用
getItem
setItem
。如何访问SD卡上的磁贴是另一回事,取决于平台和操作系统。