0
私はオープンレイヤー2オープンレイヤー3をアップグレードしています。助けてくださいオープンレイヤー3はオープンレイヤー2のようなOL.Control.CacheWriteを持っていますか?そして、オープンレイヤー3で使用できると期待されているときに現在利用できない場合
私はオープンレイヤー2オープンレイヤー3をアップグレードしています。助けてくださいオープンレイヤー3はオープンレイヤー2のようなOL.Control.CacheWriteを持っていますか?そして、オープンレイヤー3で使用できると期待されているときに現在利用できない場合
OpenLayers 3は異なるアプローチを使用しています。タイルレイヤーの場合はtileLoadFunction
をカスタム設定することができます。Image
に直接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には、サブアドレスが必要です。 –
'getItem'と' setItem'を 'localStorage'で使います。 SDカードのタイルにアクセスする方法は、別の話ですが、プラットフォームとOSによって異なります。 – ahocevar