2017-11-26 9 views
1

現在、私はコードをbase64の文字列としてlocalyに保存しています。 cordova-plugin-fileをファイルとして保存する方が良いか速いかは誰にも分かりますか?または、オフラインサポート用に画像を保存する方が良い方法はありますか?そのトピックのアドバイスや経験はありますか?ありがとうございますオフラインサポートのための画像をコードバに保存する

答えて

0

画像の使い方とパフォーマンスの重要性によって異なります。

自分のCordovaベースのアプリでは、オフラインで使用するためのマップタイルイメージをダウンロードし、HTML5キャンバスを使用して表示します。 私の場合、地図のピンチズーイング/パンニングが円滑に行われるようにするには、パフォーマンスが重要です。

私の解決策では、(cordova-plugin-file directories参照)にイメージを含むジップをダウンロードするのにcordova-plugin-file-transferを使用します。その後、cordova-plugin-zipを使用してcordova.file.dataDirectoryに解凍します。私のアプリは、new Image()オブジェクトをJavascriptで作成し、src属性を画像のローカルパスにcordova.file.dataDirectoryの範囲で設定することで、ファイルから画像データを読み込みます。私はHTML5 Canvas drawImage() functionを使って画像データをキャンバスにコピーします。 このプロセスのパフォーマンスは非常に効率的で、AndroidおよびiOSデバイスで地図タイルをスムーズにパン/ズームできます。

しかし、iOS版のWKWebViewでfile://プロトコルのサポートの欠如に、私は、iOS上で私のアプリケーション(私のためになしcordova-plugin-wkwebview-engine)のためのUIWebViewを使用し続けることを余儀なくしています。 WKWebViewプラグイン(つまりhttp://localhost:8080/path/to/myimage.png)にバンドルされているローカルWebサーバー経由で画像を読み取る、cordova-plugin-file経由で配列バッファーとして画像を読み取る、cordova-plugin-fileで画像をベース64として読み取るなど、WKWebViewのいくつかの回避策を試しましたが、地図が使用不可能になるまでポイントに従わない。

私の疑問は、SQLite DBから画像データを保存して取り出すというテクニックも、パフォーマンスが悪いということです。バイナリデータのブロブを保存することは、SQLデータベースが設計されたものではありません。 しかし、パフォーマンスはあまり問題ではない場合がありますので、解決策で十分です。

+0

ありがとうございます。私は、オフラインで使用するためのマプタファイルも保存しています。アプリケーションは、WMTSからmaptilesをダウンロードして、cordova androidとiosをサポートするcordova-sqlite-extプラグインを介してslite dbにタイルを格納します。 マップクライアントの「tileLoadFunction」を修正しました。これは、リクエストがWMTSに送信される前に、そのタイルがオフラインで利用可能かどうかをチェックします。これは静かなperfomant動作し、私は特定の時間の後にタイルをリフレッシュするために必要な情報を私に与えるタイムスタンプのような各タイルにいくつかの追加プロパティを追加/格納することができます。 – MaJe

+0

これまでのマップ(パン/ズーム)のパフォーマンスは良いですし、古いタイルをリフレッシュする可能性が私の場合には必要です。私のマプタイルのオフラインストレージについては、sqlite-pluginを使用しますが、他のすべてのイメージでは、ファイルプラグインを試します – MaJe

関連する問題