У меня есть код кэша, который пишет и читает, используя открытый слой 2, теперь Я обновляю наш открытый слой 3. Пожалуйста, помогитеОткрытый слой 3 имеет OL.Control.CacheWrite, как открытый слой 2, и если он недоступен сейчас, когда мы ожидаем, что он будет доступен в открытом слое 3
0
A
ответ
0
OpenLayers 3 использует другой подход. Вы можете настроить пользовательский tileLoadFunction
для слоев плитки: вместо того, чтобы напрямую устанавливать src
на Image
, вы можете найти URL-адрес в предпочитаемом вами хранилище (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();
}
}
// ...
});
На самом деле мы строим гибридное приложение и работаю над добавлением функциональности загрузки отсутствует плитка. Как мы можем получить доступ к локальным фрагментам на мобильном устройстве. Мы планируем загружать локальные плитки с SD-карты. Для открытия слоя SRc нужен адрес службы. –
Вы используете 'getItem' и' setItem' в 'localStorage'. Как вы получаете доступ к плиткам на SD-карте, это другая история и зависит от платформы и ОС. – ahocevar