私は現在、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でストレージ内のタイルを確認します。タイルが見つかった場合はロードします。それ以外の場合は、キャッシュを使用してサーバーからロードします。latitudelongitudezoom_lat_lngsrc
UPD:たとえば、 https ://github.com/tbicr/OfflineMap/tree/master/leaflet_idb_sql_siteおよび例http://tbicr.github.com/OfflineMap/leaflet/indexのインデックス付きdbおよびwebsqlを使用したキャッシングソリューションを参照してください。 html(Androidでは高速ではありません)。