見出し画像

[無料]ジオグラフィカのキャッシュの話

今回は、ジオグラフィカのキャッシュのお話。キャッシュとは、現金のことではなく「一時的に保存されたデータ」の事です。ジオグラフィカでは、アプリ内に保存された地図データのことをキャッシュと呼んでいます。だからキャッシュ型オフラインGPSアプリというわけです。

前提:タイルマップを敷き詰めて地図を表示している

まず大前提の話ですが、ジオグラフィカは国土地理院のタイルマップを使用しています。どういうものかと言うと、↓こういう画像です。

出典:国土地理院

このタイルマップは、ズームレベル:15 X座標:29030 Y座標:12883というもので、下記のURLでアクセス出来ます。

https://maps.gsi.go.jp/xyz/pale/15/29030/12883.png

15、29030、12883という数字がURLに入ってますね。ズームレベルが1減ると座標の数字は半分になります。URLにするとこうなります。

https://maps.gsi.go.jp/xyz/pale/14/14515/6441.png

地図は下記のようになります。広域の20万分の1地形図になりました。

出典:国土地理院

ズームレベルが1つ上がると座標の数字は2倍になり、表示範囲は狭くなります。16の58061の25767だとこんなURLになります。

https://maps.gsi.go.jp/xyz/pale/16/58061/25767.png

出典:国土地理院

更に詳しく知りたい方は下記リンク先を読んでください。タイルマップの座標と経緯度は相互に数式で変換可能です。

タイルマップのURLの後半はズームレベルと座標ですが、前半は地図の提供者や種類になっています。

https://maps.gsi.go.jp/xyz/pale/16/58061/25767.png

これの、maps.gsi.go.jpが国土地理院を意味して、paleの部分が地図の種類になっています。

ここまで載せたのは淡色地図(pale)ですが、種類をseamlessphotoにすると航空写真のタイルマップを表示できます

https://maps.gsi.go.jp/xyz/seamlessphoto/15/29030/12883.jpg

出典:国土地理院

どういうURLにアクセスすればどういう地図を表示できるかは、国土地理院の場合は地理院タイル一覧として公開されています。

このタイルマップ方式は現在の地図アプリでは標準となっていて、AppleもGoogleも同じ仕組みを使っていますし、地図を使っているサービスはほぼ全てこの方式を使っています。

ジオグラフィカはGoogleの地図描画エンジン(アプリの部品)を使用しています。FieldAccessの様に独自の地図描画エンジンを使用しているアプリもありますが、私はそこまで凄くないのでGoogleのものを使っています。

地図描画エンジンは画面のスクロールに合わせて、「このタイルマップをくれ!」と、必要な地図のズームレベルとXY座標をアプリ側に送ってきます。アプリ側のプログラムは必要なタイルマップをダウンロードして地図描画エンジンに渡します。すると画面上にタイルマップが敷き詰められて地図アプリとして使えるようになる、という仕組みです。

ジオグラフィカの画面。とてもたくさんのタイルマップを敷き詰めてこの画面を作っている。

ジオグラフィカの表示キャッシュ

ジオグラフィカのキャッシュには2種類あって、画面に表示した地図を保存したものを表示キャッシュといいます。それとは別に、範囲を指定してダウンロードした一括キャッシュがありますが後述します。

ジオグラフィカのキャッシュシステムは、必要に応じて表示キャッシュと一括キャッシュから必要なタイルマップを探して画面上に地図を表示します。

アプリ内のストレージ。地図の種類とズームレベルごとに管理しています。

表示キャッシュは決められた容量と期間で削除されます

画面に表示した地図を全部保存するので、使い続けているとスマホのストレージをどんどん消費してしまいます。そこで、ジオグラフィカは一定の条件でタイルマップを削除するようになっています。

初期設定は、容量で200MB、期間で1ヶ月です。削除タイミングはアプリ起動時で、動作中には削除処理は行っていません。表示キャッシュの容量設定を200MBにしても動作中に増えていきますが、次回起動時に200MBまで削除されます。

表示キャッシュの容量が200MBを超えた場合、越えた分を古い順に削除します。古い順というのは、地図を表示した時のタイムスタンプで古い順です。地図を見ることでタイムスタンプが更新されます。

つまり、持っているキャッシュの中でも古いもの、画面にまったく表示していないものから順に削除されます。

期間はそのままで、そのタイムスタンプが指定した期間より古くなったものを削除します。1ヶ月になっているなら、1ヶ月間まったく表示されなかったタイルマップが削除されます。1ヶ月使ってないなら、きっと明日も使わないよね?ということです。

スマホのストレージがいっぱいになったら?

スマホのストレージがいっぱいになってしまうと当然追加の表示キャッシュはできなくなりますし、スマホ自体の動作も遅くて不安定になります。その際、ジオグラフィカの表示キャッシュはシステムから自動削除されます。意図してシステムからの削除が行われる領域に保存しているためです。スマホのストレージ残量にも注意してください。

タイルマップは適当に消えた方がいい

タイルマップが残り続けるとスマホのストレージを圧迫してしまいます。また、残り続けると地図が改訂されても新しい地図が表示されません。適当に消えていくと、次回使用時に新しい地図が読み込まれます。

だいたい200MBもあれば足りると思います

日帰り登山で登る程度の範囲を表示キャッシュで保存すると、50MB~100MB程度の容量になります(トレランなどもっと広い範囲だと増えますが)。ズームレベルを変えて広域から詳細まで見て、このくらいの容量です。

前日の夜に地図を見ておけば、翌日の山行で地図が表示されないということは、基本的には起こらないと思います。

とは言え、県全体みたいな表示キャッシュをしようとすれば、1時間前に見た部分でも200MBを超えてしまう可能性もあります。超えた部分を古い順に削除するので、1時間前の地図でも削除される可能性はあります。使い方に応じて容量設定を変えてください。

キャッシュが十分に出来ていないと表示されません

表示キャッシュは、画面に表示した地図は保存されるけど、表示していない地図は読み込まれていないので保存されません。十分に保存するには、地図のズームレベルを変更して詳細から広域までよく見ておくことが大事です。ズームレベルに抜けがあると下の様な表示になってしまいます。

十分なキャッシュが出来ていないとこうなります。

一通りキャッシュできたら、スマホを機内モードにして確認してください。その際、ジオグラフィカを再起動しておくとベターです。(起動時にキャッシュ削除が行われるので、より正確に確認できます)

遅いネットに繋がってる時の注意点

そこそこキャッシュしたはずなんだけど、なぜか地図がなかなか表示されない、地図の表示が遅いということがあります。これはどういう時に起こるかと言うと、

地図のキャッシュに少し抜けがあり、その抜けを遅いネットワークからダウンロードしようとしてる時

です。

例えばズームレベル15の地図はあって、13もあるんだけど14がキャッシュされていない場合。ズームレベルを下げて14が必要になった瞬間に、それをダウンロードしようとします。

機内モードか圏外で完全にオフラインなら、ズームレベル13の地図を拡大表示するので粗い地図が瞬時に表示されます。ところが、ネットにわずかでも繋がっていると、そこからダウンロードしようとします。その処理が画面全体のタイルに発生するので待ちが発生します(タイムアウトは設定してありますが)。

この現象はスマホを機内モードにすることで解消します。機内モードになった瞬間、ストレージ内のキャッシュでどうにかする様に動くため、表示待ちが起こらなくなります。

なお、改善策は分かっているので今後この現象は起こらなくなります。少々お待ち下さい。

表示キャッシュの利点と欠点

  • 利点:必要な部分だけ見て保存するので容量的な効率が良い。

  • 利点:キャッシュしながら地図を読めば山域の理解が進む。

  • 利点:自動で消えていくのでスマホのストレージを圧迫しないし、地図が改訂されれば新しい地図が表示される。

  • 欠点:十分にキャッシュしていないと地図が表示されない→機内モードにしてよく確認する。

  • 欠点:自分が登る予定でない場所に行ってしまうとキャッシュが不十分かもしれない→エスケープルートやルートミスを想定して地図を見ておく。

  • 欠点:自動で削除されるので、ずっと前に行った山の地図は再度見直さなければいけない→見直しましょう。

一括キャッシュ

一括キャッシュは、範囲指定してその範囲内のタイルマップを総ざらいしてダウンロードする方法です。

「メニュー→ルーツ→一括キャッシュ」から行います。

「範囲を配置してください」と表示されるので、一括キャッシュしたい場所の中心に、画面中央のセンターマーク(+マーク)を合わせます。

◎を押すと次の画面に進みます。赤枠が表示されるので、赤枠の四隅を長押しで動かして、範囲を微調整します。

◎を押すと次に進みます。最大ズームレベルを変更して、ダウンロードする枚数を決めます。この枚数というのはタイルマップの枚数のことで、ズームレベルとダウンロードするタイルの種類で変わります。

この場合はズームレベル14で淡色地図と陰影をダウンロードする設定で、284枚のタイルマップとなります。ズームレベルが14だと粗い地図になるので15にはしたいですね。でも、ズームレベルを上げると998枚に増えます。

ズームレベルを上げるとタイルは倍々で増えます。種類によって最大ズームレベルが違うので単純な4倍にはなりません。

無課金の場合は300枚までの制限があるので、998枚の一括キャッシュは出来ません。機能制限解除に課金していると3000枚まで一括キャッシュすることが出来ます。

条件が決まったら◎を押すとダウンロードが開始されます。そのままスリープにせず放置してください。

終わるとこの様に表示されます。エラーがあるとその旨が表示されます。

ダウンロードした一括キャッシュは「メニュー→ファイル→一括キャッシュ」で管理できます。一番上にあるのが今行った一括キャッシュで、容量は61MBとなっています。

一括キャッシュの利点と欠点

  • 利点:範囲指定で漏れなくキャッシュするので、地図が表示されないということは原則的に起こらない。

  • 利点:自動削除の対象外なので自分で消さない限り残る。

  • 欠点:万が一にも行かないような場所まで隅々キャッシュするのでストレージ容量的な効率は悪い。

  • 欠点:能動的に消さない限りいつまでも残ってしまうので地図が改訂されても新しくならない→たまに自分で消す。

  • 欠点:範囲指定してボタンを押せば終わりなので、事前の読図を行わず、読図的にいい加減になってしまう→一括キャッシュをしても読図はしましょう。

それぞれ、特性を理解してお使いください。

まとめ

  • 地図はタイルマップの集合体として表示しています。

  • 表示キャッシュは、見た地図は保存され、見ていない地図は保存されません。詳細から広域までしっかり見ておいてください。

  • 表示キャッシュは容量と保存期間により、古い順に削除されます。山行前に必要な山域の地図を見ておいてください。

  • 一括キャッシュは便利ですが、利点と欠点は表裏一体です。理解してお使いください。

わぁい、サポート、あかりサポートだい好きー。