Ich habe Code des Caches schreiben und lesen mit offener Schicht 2, jetzt Ich verbessere unsere offene Schicht 3. Bitte helfen SieIst offene Schicht 3 mit OL.Control.CacheWrite wie offene Schicht 2, Und wenn es jetzt nicht verfügbar ist, wenn wir in Open Layer 3 verfügbar
0
A
Antwort
0
OpenLayers 3 verwendet einen anderen Ansatz. Sie können eine benutzerdefinierte tileLoadFunction
für Kachel-Layer konfigurieren: Statt die src
direkt auf Image
zu setzen, können Sie die URL in Ihrem bevorzugten Speicher (LocalStorage, IndexDB, ...) suchen und sie holen, falls verfügbar oder speichern Sie sie wenn Sie möchte.
Etwas wie folgt aus:
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();
}
}
// ...
});
Eigentlich bauen wir eine Hybrid-App und offline arbeiten Kachel Die Funktionen zum Laden auf Hinzufügen. Wie können wir im Mobilgerät auf lokale Kacheln zugreifen? Wir planen, lokale Kacheln von der SD-Karte zu laden. Open Layer SRc benötigt die Serving-Adresse. –
Sie verwenden 'getItem' und' setItem' in 'localStorage'. Wie Sie auf Kacheln auf SD-Karten zugreifen, ist eine andere Geschichte und hängt von der Plattform und dem Betriebssystem ab. – ahocevar