MAD MAPS雑記

ひさしぶりに近況〜〜〜。
画像ロードの高速化がどうあがいても無理とわかって、しばらくやる気を無くしてたのだが、長い梅雨もようやく明けたことだしってんで、またぼちぼちと改修を進めてる。とりあえずかねてから予定していたチェックポイント機能はだいたいOKになった。チェックポイントへの到達判定が少々甘いので不安は残るが、まぁ実用にはなるだろう。

ちなみにチェックポイント機能に伴って、次のチェックポイントの方向ガイド(直線ライン)と直線距離も表示するようにした。ルートポイントの最終点は自動的にチェックポイントになるから、目的地の1点だけをルートポイントに設定すれば、モバイルマップNaviの目的地機能と同等の動作をすることになったりする。まぁ人によってはこっちの方がいいこともあるだろう。

あと、地図スケールに日本全図レベルをつけた。モバイルマップNaviの地図は、Ver2.0より前は4段階だったが、Ver2.0からより広域な日本全図データが加わっていた。しかしMAD MAPSの地図管理処理はVer2.0が出る前に作ってたので、まだ対応してなかったのだ。まぁ簡単に対応できたんだけど(^^;)。ただ、この日本全図データは他のスケールと違って、地図ファイルが1000x1000ピクセルPNGデータになってる。ザウルスJavaの画像展開速度は、ほぼ画像ファイルのピクセル数に比例するので、当然他スケールの4倍くらい、ざっと30秒ほどの時間がかかってしまうのだ。正直これはかなりつらい(^^;)。まぁオマケということで、あまり実用性はないだろうなぁ。

なお、地図ロード速度に対して、完全に諦めたわけではない。速度自体はどうしようもないが、使い勝手をもっと上げる余地はあると思うのだ。

地図ロードは、ほとんどが画像データをJavaで表示できるImageオブジェクトに変換するところで時間を食っている。で、この速度はほぼ画像のピクセル数に比例している。なら、地図画像を縦横幾つかに分解して別々にImageオブジェクトにするようにすれば、一つ一つのピース自体は短い時間で表示出来るようになるはずなのだ。モバイルマップの地図データを、縦横それぞれ2分割してImageオブジェクト化するようにすれば、1ピースあたりは1秒強くらいで処理できるはずだ。画面中央に近いところを優先して処理するようにすれば、全体としての速度は変わらなくても使い勝手はだいぶ良くなるだろう。

ただ、この機能を実現するためには、PNGの展開処理を自前で用意しなければならない。標準ライブラリの展開処理では画像の一部分だけをImage化なんて真似はできないから、自前でメモリ上に展開した上で分割してImage化する処理を書かないといけないのだ。・・・・うーん、どっかに使いまわしやすいソース転がってないかなぁ(^^;)。