[ トップ ] [ Advanced/W-ZERO3[es] ]

最終更新 - 2014/01/31

CacheGoogleMap.mscr

モバイル Google マップでもオフラインで見れるならNaviComputer用の地図を作るよりもモバイル Google マップのキャッシュを作ったほうが便利に違いない。
モバイル Google マップのキャッシュはオンライン、オフラインの両方で使え、オンラインでは検索などの機能が使える。
GPSが無いアドエスには無線LANのアクセスポイントを利用した現在地表示があるのも助かる。
テンキーのショートカットも便利だ。

そう考え、検索結果で出た位置から渦巻状にスクロールさせるスクリプトを書いた。
うまくいったので、地名、住所、緯度経度、建物名等にも対応させ、ズーム4段階分のキャッシュを取得するようにした。

初めて書いたので慣れてる人から見れば笑っちゃうようなスクリプトなんだろうけど、やりたいことはできたので公開することにした。
このスクリプトを改良して公開するのは自由である。


CacheGoogleMap.mscrのダウンロード

このスクリプトを動かすにはMortScriptがインストールされている必要がある。
アドエス以外の機種で正常に動くかは分からないが、Windows Mobile 6 Localized Emulator Imagesで正常に動作することは確認した。
ただし、正常に動作したとしてもWVGAよりも解像度が低い端末ではキャッシュされない部分が出る。
ちなみにエミュレータで作ったキャッシュは実機と互換性が無く、キャッシュは増えても無いのと同じであった。キャッシュは実機で作らなければならない。



バージョンによるキャッシュのファイルサイズの違い

PC用のデータを使うNaviComputerよりもモバイル Google マップの方がファイルサイズが小さく済むのではないかと思っていたが、全く逆であった。正確な比較はできないが、モバイル Google マップの方が数倍大きくなる。
NaviComputerで2X Zoomを使うとモバイル Google マップと同じ縮尺になるが、画質が悪い。この差がファイルサイズの差だろう。

また、モバイル Google マップのバージョン3.2.1と4.1.1では1画面内の地図を構成する画像タイルの枚数が異なり4.1.1の方が少ないので、CacheGoogleMap.mscrで作ったキャッシュを比較してみたところ、ファイルサイズに差があった。
キャッシュやお気に入りに互換性はないので、CacheGoogleMap.mscrでキャッシュを作る前にどちらのバージョンを使うか検討する必要がある。

   Ver.3.2.1  Ver.4.1.1
 秋葉原駅  51MB   40MB 
 池袋駅  57MB  45MB



CacheGoogleMap.mscrの使い方




検索ワードを書いたテキストファイルをkeyword.txtとして用意する。1行に一ヶ所の検索。必ず改行を一つだけ入れる。
改行が無いと10573731057313のように入力されてしまう。

keyword.txtはjotの標準になっているutf-8で\My Documentsに保存する。



CacheGoogleMap.mscrを走らせると自動的にモバイル Google マップが起動する。
回線が接続された頃に範囲の選択のメッセージが出るので広い範囲で良ければ「はい」、そうでなければ「いいえ」を押す。

次に「何件検索しますか?」という画面が出るので数字を入力し、左ソフトキーを押す。
面倒なのでCancelを選択した時の処理は省いた。中止にはならず、クリップボードに残っている文字列で検索が始まってしまう。

次に終了時にバイブレートする秒を入力し、左ソフトキーを押す。寝ている間にキャッシュを作りたい場合は0で。
横画面になっていても自動的に画面を回転するようになっている。

スクロールが始まるとバッテリー節約のために液晶画面がオフになる。
液晶をオンにして動いているか確かめたりしてそのままにしていても、3週目以降は周の変わり目に自動的にオフになる。

モバイル Google マップのズームレベルは16段階。CacheGoogleMap.mscrでは13、14、15、16の地図を表示してキャッシュを作る。

何が原因なのか分からないが、1KBもキャッシュされていないということが4度あった。
成功率で言えば95%以上あるが、まとめて数件やってそうなると件数分全て合わせても0KBなのであまり多い件数はやらないほうがいいかもしれない。
Windows Mobile デバイス センターで取得すればPCからキャッシュの増え具合を確認できる。
全く増える様子がないときはキャッシュされていない可能性が高いのでやり直したほうが良い。


「はい」を選択した時の範囲 2時間50分
サイズ 約50MB
 ズームレベル   画面(縦 x 横)  表示範囲(縦 x 横) 
 13  3 x 3  約3.9km x 2.7km
 14  7 x 7  約4.4km x 3.0km
 15  13 x 13  約4.1km x 2.6km
 16  25 x 25  約4.1km x 2.7km

「いいえ」を選択した時の範囲 50分
 ズームレベル   画面(縦 x 横)  表示範囲(縦 x 横) 
 13  3 x 3  約3.9km x 2.7km
 14  3 x 3  約1.9km x 1.3km
 15  7 x 7  約2.2km x 1.4km
 16  13 x 13  約2.2km x 1.4km

CacheGoogleMap.mscrを走らせて最大までズームしたのを確認した後にズームレベルを手動で変更することもできる。
例えば、レベル14から始めるとレベル14が25 x 25となり、約15.7km x 10.7kmと広範囲に取得できる。
2件目以降は最大までズームした状態でスクロールが始まるので注意。

取得中はアドエスで他の作業をすることができないが、 JWezWMの自動更新があっても影響は無い。
かかってきた電話に出ることもできるが、一旦、中断されてしまうとやり直しになってしまう。

読み込みが終わると2件目の検索が始まる。
指定の検索数が終了したところで指定した秒数だけバイブレートして終了を知らせ、自動的に回線を切断し、モバイル Google マップを終了する。
終わった検索ワードは必要なければkeyword.txtから手動で削除する。

スクリプトを途中で止めるには同梱のKillScriptCGM.mscrをスクロールが止まっている間に走らせる。
タイミングによってはモバイル Google マップがスクロールしっぱなしになるが、普通に終了できる。
途中で止めてもそれまでに表示した場所はキャッシュされる。



検索ワードの注意点

このスクリプトは検索結果が複数出ても選択できるように、液晶画面を消してスクロールを開始するまでに時間の余裕を持たせているが、仕様変更で検索結果は一つしか出なくなったようだ。
よって、検索ワードに気を使う必要はほとんどなくなった。

郵便番号はたまに-が必要な場所がある。緯度と経度の間の,はスペースでも良い。



航空写真

CacheGoogleMap.mscrで航空写真をキャッシュする場合はズームレベルが18段階になっていることに注意しなければならない。
そのまま始めるとズームレベル18から取得するが、レベル18は拡大しすぎていて目的地までの道順を見るのには向いていない。
また、地方などはレベル18の航空写真が無い場合が多い。場所によってはレベル17、16も無い。

自分はCacheGoogleMap.mscrを走らせて最大までズームしたのを確認した後に、縮小を2回押してレベル16から取得している。

航空写真はファイルサイズが大きくなることにも注意。通常の地図の2倍くらいある。



切られるのが嫌なので海釣り用の太い糸を使っていたのに、あっという間に竿を持っていかれそうになり、1秒で糸が切れるほど巨大な何かがかかった名無しの池。
自分以外に釣り人がいることはほとんどなく、自殺した人がいるという話もあったので不気味だった。
あれから約25年、この池はどうなっているのかな。

WILLCOMサービスエリアマップで調べてみるとウィルコムは圏外で使えないだろう。



地図の更新

地図に更新があれば、キャッシュがあっても読み込みがあり、変更される。
キャッシュが無い場合よりも短い読み込みで済む。



キャッシュがあるときのデータ通信料金

PCの利用時間が増え、アドエスでネットを見ることは少なくなり、自宅に無線LANも導入したので、そろそろデータ通信料金の削減を考えている。
問題は最近、趣味になっている"歩く"とき。

PCの前に座っている時間が長く、運動不足を感じて、あちこち歩くようになったのだが、読みたい推理小説がある図書館まで往復2時間、メガネのナイロン交換に往復5時間半、ヘッドホンを買いに往復6時間と目的を作って距離を伸ばしていくうちに、知らない街の風景や思いがけない発見、歩ききった時の達成感で、地図を見ながら歩くのが楽しくなってきて、月に数回、遠出している。
家から歩いて20分ぐらいのところに釣りができるところがあるなんて知らなかったなあ。




さて、そこで、キャッシュを作ってある状態で検索などをするとどのぐらい料金がかかるのか、パケ☆すたで調べてみた。

   金額
 検索  3〜10円
 経路検索 徒歩  3〜10円
 無線LANを使用しての現在位置表示  5〜15円
 ローカルに保存したKMLの表示  10〜20円

思ったよりも全然かからない。
なお、検索結果を消すのにも数円かかる。

地図データは頻繁に更新されているのでキャッシュは前日に作っておくのが良い。
CacheGoogleMap.mscrではたまにスクロールやズームに読み込みが追いつかない時があり、そういった場所では読み込みが発生してしまうのでパケット通信量0というわけにはいかないだろう。
また、少ないながらも何か通信をしているようだ。

パケット通信をしないようにするにはSetWSIMやshwless.lnkでW-SIMをオフにしてしまえば完璧だが、その状態では電話もメールもできないので注意しなくてはならない。



パケット通信テスト

知らない街を往復1時間歩いてパケット通信量を調べてみた。キャッシュは前日にWindows Mobile デバイス センターで取得。



30分後、目的地に到着。タイルの読み込みはなかったように見えたが、何かの通信で35円になっていた。
帰りは無線LANをオンにして現在位置表示を使ってみた。



出発地点に戻った頃には84円になっていた。
タイルの読み込みさえなければ、パケット通信量がかなり節約できるのは間違いなさそうだ。



このスクリプトでは高速回線を使ってもキャッシュする時間をそれほど短縮できない

最初はWindows Mobile デバイス センターでネット接続した速度(約1M)に合わせたものを作った。
しばらくは調子良く動いていたが、キャッシュが膨らむに連れてきちんとキャッシュしなくなった。
CPU使用率が常に100%になっていたためか、スクロールと表示の処理が優先となってキャッシュの処理は省かれるようで、150MB辺りから受信したデータ量に対してキャッシュの増加は伸び悩み、実際に使ってみてもキャッシュしたはずの場所で読み込みが必要になった。

また、スクリプトを走らせている間や直後にモバイル Google マップが不安定になっていき、延々と白い画面のままだったり、突然、モバイル Google マップが落ちたり、スクリプト停止直後にフリーズしたりといったことが頻繁に起こった。

試しにスクロール直後の一時停止を長くし、CPU使用率が下がるようにしてみると、キャッシュにかかる時間は3倍になったが、表示したところはほぼキャッシュされるようになり、800MBを超えても安定していた。
ゆっくりになった分、100Kbps程度のウィルコムの回線速度でもほとんどキャッシュできるようになって、汎用性も増した。

なお、高速回線用のスクリプトのテスト中に何度も落ちたり、フリーズしたりしたが、キャッシュがクリアされるということは一度もなかった。
ただ、キャッシュにはとても時間がかかるだけに、万が一の事を考えてバックアップしておいたほうがいいと思う。



回線速度とバッテリーの消費量

CacheGoogleMap.mscrはウィルコム回線でも使えるが、Windows Mobile デバイス センターを使うとバッテリーの消費量が半分ぐらいで済むようだ。
表示が速く、CPU使用率が下がっている時間が長いからだろうか。



知らないから生まれた

素人が初めて書いたMortScriptであっさりサクサク便利になってしまい、ふと、なんで今まで誰も作らなかったのだろうかと思った時にコンピュータ将棋界に革命を起こした「Bonanza」の話を思い出した。
開発者の保木邦仁氏は将棋についてほとんど何も知らなかったという。

将棋は全ての手を読むには膨大な時間を必要とし、強さはどれだけ速く、深く、正確に手が見えるかによるところが大きい。
渡辺明竜王は時間が無い時は一番最初に見えた手を指すと言っていた。
それまでの強いと言われていた将棋ソフトはプログラムが書けて将棋もそれなりに強い人が作っていた。だから全ての手を読ませるなんてありえなかったのだ。

これと似たように、地図のデータを取得するのに時間をかけてスクロールさせるなんてのはプログラムが書ける人には浮かばない方法なのだろう。


[ トップ ] [ Advanced/W-ZERO3[es] ]

inserted by FC2 system