私は現在、phonegap、cloudmade、およびリーフレットを使用した地図を備えた Android アプリケーションを開発しています。どうにかして Android フォンでマップ タイルをキャッシュする方法はありますか? 毎回サーバーからマップ タイルを読み込むのは非常に遅いです。
1 に答える
これは理論上の考慮事項にすぎず、リーフレットの実用的な実装はわかりません。しかし、私にはいくつかの問題がありますが、今はそれを解決する時間がありません。
Webおよびphonegapストレージ:
loacalstorage
-同期、base64 url、小さいサイズ2.5-5MBで簡単に実装できます(おそらくphonegapはlocalstorage
小さいサイズの問題を解決します)。indexed db
およびweb sql
-非同期、サイズ50 MB(多分それ以上)。- phonegapファイルストレージ-非同期。
実装方法:
ストレージで機能する独自のレイヤーを作成します。非同期APIではおそらく難しいでしょう。
タイルは、base64エンコーディングを使用してデータURLとしていつでも保存できます。JSとcanvasを使用して、サーバーのURLからデータのURLに画像を変換できます。
ファイルシステム上のタイルへのリンクを使用できるため、タイルのプリロードを使用してファイルストレージを使用する最も簡単な方法を使用できる場合。
非同期APIの場合、いつでもタイルを検出できます。 : idとfakeを使用して偽のタイルを挿入しzoom
、タイルが見つかった場合はこのIDでストレージ内のタイルを確認します。タイルが見つかった場合はロードします。それ以外の場合は、キャッシュを使用してサーバーからロードします。latitude
longitude
zoom_lat_lng
src
UPD:たとえば、 https ://github.com/tbicr/OfflineMap/tree/master/leaflet_idb_sql_siteおよび例http://tbicr.github.com/OfflineMap/leaflet/indexのインデックス付きdbおよびwebsqlを使用したキャッシングソリューションを参照してください。 html(Androidでは高速ではありません)。