Dropbox

MGMapsのローカルマップを作るMapTileChacher.perlの私の環境での実行例です。二日前の記事もあわせてご覧ください。

[ 変更の履歴 ] – 長いエントリーなので最初に変更履歴を書いておきます
2007/06/13 07:56 MGMapsのSuite settingsの項目追加 [デバイスでの表示 ]
2007/06/14 08:16 アルファ第2版対応

[ 準備 ] – Windowx XP, Linux, Mac OS X (Tiger)別に書いておきます

共通
専用のディレクトリー(フォルダー)を作成しておくのがお勧めです。そこにMapTileCacher.perlを置きます。

Windows XP
ActiveStateから無料のActivePerlをダウンロード(Windows, MSI)し導入します。バージョンは5.6、5.8のどちらでも構わないと思います。

SunsiteのFTPサーバーからsslibsXXXc.zipとwgetXXXXXXXXb.zip(ただしXはバージョンを表す数字)をダウンロードします。それぞれを解凍しlibeay32.dllとssleay32.dllをC:¥windows¥system32へ、wget.exeをパスの通っている場所もしくはMapTileCahcer.perlと同じ場所にコピーします。「wgetの使い方」というページにさらに詳しい手順が紹介されていますので参考にしてみてください。

Linux
おそらく標準的なパッケージに必要なコマンドは含まれていると思われるので特別な準備は必要ないでしょう。

Mac OS X
wgetをAndrew’s Denからダウンロードし導入します。 MapTileCacher.perl v1.10 ではMac OS X標準のcurlをwgetの代わりに使用するので特別な準備は必要ありません。

[ 確認 ]

コマンドライン・ウインドウ(Mac OS Xならターミナル)を開きMapTileCahcer.perlのある場所をカレント・ディレクトリーとします。mapというディレクトリーを作成したとして cd c:¥mapとかcd ~/mapみたいな感じです。

perl -v を投入し This is perl, v5.8.6みたいなメッセージが表示されることを確認。
Mac OS X以外の場合、wget を投入し wget: missing URLなどと表示されることを確認。

[ 実行例 ] – WindowsでGoogle Mapを取得した例です

コマンドライン・ウインドウを開きMapTileCahcer.perlのある場所をカレント・ディレクトリーとします。

  1. perl MapTileCacher.perl を実行。
  2. map typeの一覧が表示される。Choice: に対して GoogleMap と答える。
  3. Enter Zoom Level(0-23): に対して 10を答える。
  4. Top left (latitude, longitude): に対して 35.81, 139.44 と答える(所沢市付近)。
  5. Bottom right (latitude, longitude): に対して 35.36, 139.98 と答える(木更津市付近)。
  6. Press enter to continue. と表示されるのでreturnキーを押す。
  7. 以下のようなメッセージがいくつか表示される。

    *Downloading tile 1 of 9 from http://mt2.google.com/mt?n=404&v=w2.52&x=908&y=402
    &zoom=7
    08:28:32 URL:http://mt2.google.com/mt?n=404&v=w2.52&x=908&y=402&zoom=7 [22919/22
    919] -> “TempTile” [1]

    FINISHED –08:28:32–

  8. 最後に***Caching Complete***と表示されたら終了です。

正常に実行されるとMGMapsCacheV1MGMapsCacheというディレクトリーが作成されます。その下にマップタイプとZoomレベルを表すディレクトリー、そらにその下に数字のディレクトリーが出来、その中にマップファイルが作られます。マップファイルはGoogleMapの場合pngファイルになっています(マップの種類によってはjpgだったりもします)。ただし拡張子はmgmになっています。拡張子を一時的にpmgに変更すればWindowsで表示するこも出来るので該当のエリアのものであるかどうか簡単に判断出来ると思います。

Zoom レベル10がうまく行けば必要に応じ同じエリアの他のZoomレベルも取得します。11, 12, 13, 14, 15と連続して取得した方がデバイス上での操作性が良いです。15まであれば、ほぼ実用的であると思います。Zoomレベル16まで取ると細かい路地まで表示されますが関東一円を取得すると何百MB単位になってしまいます。

実行中にERROR: Requested tile did not exist.のようなメッセージが出た場合は経度緯度の指定に間違いがあるかもしれません。 またTempTileファイルが見つからないようなメッセージの場合はwgetコマンドがうまく動いていない可能性があります。

[ 経緯度、Zoomレベルについて ]

東経を正数、西経を負数、北緯を正数、南緯を負数で表します。従ってアジアの場合どちらも正数になります。Zoomレベルは数値が小さいほど広い範囲を表示でき、大きいほど詳細な地図になります。

経緯度を調べるたりZoomレベルの目安を得るのにGoogle MapのURLリンク機能が使えます。Google Mapで経緯度を取得したい地点を中央にして Link Icon アイコンをクリックもしくはマウスポインターを置きURLを表示します。URL中のll=が経緯度です。またz=で表示されている数値が Zoomレベルに相当します。

MGMapsのフォーラムで世界地図的なものはZoomレベル0-3で経緯度を90,-180と-90,180で取得すれば良いというポストがありました。大体は取れたけど、ちょっとつながっていないなぁ、まっいいか。 🙂

[ デバイスでの表示 ] – Nokia E61での実行例です

マップのコピー
MGMapsCacheV1MGMapsCacheフォルダーを丸ごとE61の外部メモリー(Mini SD)のルートにコピーしました。Sony Ericssonのデバイスでは、おそらくOtherとかDocumentというフォルダーの下にコピーしないとMGMapsから見ることが出来ないと思います。

Suite settingの変更
E61の場合、Menu/Tools/App.mgr.を開きます。Mobile GMapsを探しOptions/Suite settingsにて’Read user data’と’Edit user data’の設定を’Ask first time’もしくは’Always allowed’にします。日本語版E61での設定例は「PDAとGPS」にあります。

MGMapsの設定
Setting/Map BrowsingにてStored Mapsにチェックします。Storage PathがE:であることを確認します(Sony Ericssonでは、おそらくここにフォルダーを指定する必要があります)。

マップの表示
MGMapsで以前に目標地点付近を表示していたならズーム(*, #)をすることにより地図が表示されると思います。完全に迷子になっているのならばGo to機能が使えます。例えば関東でしたら Latitude 35 36 33, Longitude 139 43 30, Zoom Level 10で品川付近に移動すると思います。

エラー表示
まったく表示できず見当もつかないという場合にはMGMapsのHelp/Debug logが役に立ちます。各種エラーメッセージに混じって開こうとしている地図ファイルがパス名で表示されるので、実際にメモリーカードにコピーしたファイル名と比較してみると良いでしょう。

Trackback

15 comments untill now

  1. 詳細な方法ありがとうございます。試してみました。一応、ダウンロードはされるのですが、一枚一枚に数分という長い時間がかかります(回線は高速です)。ダウンロードしながらMGMapsCacheV1フォルダの中を見ていると、pngファイルをダウンロードしたあとも、しばらく、wgetが終わらないのが原因のようでした。(ちなみにperlは5.8.8です)。一体何が原因なのでしょうか?
    実行画面は下の通りです。
    Downloaded: 15,824 bytes in 1 files
    Tile cached at MGMapsCacheV1\GoogleMap_10\85\907_402.png
    *Downloading tile 2 of 16 from http://mt2.google.com/mt?n=404&v=w2.52&x=908&y=402&zoom=7
    http://off/:
    16:03:39 ERROR 503: Service Unavailable.
    16:04:38 URL:http://mt2.google.com/mt?n=404&v=w2.52&x=908&y=402&zoom=7 [22919/22919] -> “TempTile” [1]
    FINISHED –16:05:45–
    エラーは吐くのですが、ダウンロードは続きます。
    また、E61のE:にMGMapsCacheV1を入れて見ましたが、今のところ、地図は見えません、、。gotoや、logは試しました(エラーなし)。またご報告します。

  2. magcupさん、こんにちは
    ERROR 503というのはgoogleのサーバーから返されたエラーコードです。wgetは、何とかサーバーにアクスはしていたという証拠でもあります。この場合、マップファイルはダウンロード出来ていないと思います。
    エラーの意味は、表示されている通り’Service Unavailable’です。通常、サーバーの負荷が多いとかメンテ中であるとかの理由で返されます。聞いたところによるとGoogle Mapsのサーバーはロボットから大量にマップを取り込まれていると判断するとエラーを返すそうです。その時は503なのかなぁと想像しています。
    実際にmagcupさんのアクセスがロボット判断されることは無いと思いますので、一時的な問題だったのではないかと思います。http://mt2…と書かれているURLにアクセスするとちゃんと狭山市近辺の地図が表示されます。もう一度時間をおいて試してみてはいかがですか?

  3. 情報ありがとうございます。
    かなり細かいところまで書いていただいているので、今回はちゃんと出来るかと思います。
    小生の環境ではwget の動作がおかしかったようなので、御紹介いただいたサイトから新しいものを落として試してみます。

    さすがはコザックさんだと感謝しています。

  4. kAbajyUさん、
    どういたしまして。ちょっと、時間的余裕があったもので、、、(ならKKJConvのメンテしろって言われそうですが)

  5. magcupです。また試してみました。
    エラーは出ているのですが、イメージファイルは作成されています。
    wget単体でダウンロードしようとすると、数秒で、ファイルのダウンロードは完了する(中身も出来上がっています!)のですが、
    100%[====================================>] 43,805 –.–K/s ETA 00:00
    のメッセージを出したまま、だんまりを続けます。数分すると、
    15:27:33 (736.99 B/s) – `index.html’ saved [43805/43805]
    と言うメッセージで終了します。
    Google、goo、Nokia、毎日などのトップページはだんまりなしですぐに終了しますが、それ以外、たとえばExciteや、読売、朝日、などはだんまりです。

    それでも十数分でダウンロードが終了しますので、イメージファイルをフォルダごと(Zoom=1で世界地図にしてみました)、E61のE:に入れて見ましたら、無事に表示されました。Allow read?だけでなく、Allow write?にもYesとするところが肝のようですね。(確認キーを何回も押すことを要求されました)。
    どうもありがとうございます。

  6. magcupさん、
    とりあえず地図は出来たようで良かったです。しかしwgetそのものの挙動が違うと言うことなのですかね。詳細地図をあるていどの範囲で取得するときに長時間かかってしまいますね。

  7. 通りすがり @ 2007-06-24 08:02

    初めまして。N73を所有しておりこのサイトを見てMGmapsのオフライン閲覧にチャレンジしてみました。無事に地図自体は見ることが出来ました。が少々問題が生じています。E:\MGMapsCacheに入れた*.mgmデータのせいでしょうか、アプリを何も立ち上げず何もしていない状態で放置しているとRAMがどんどん減っていきます。(FreeRAM 18MB→5MBとかになります。MGMapsCachehフォルダごとデータ削除するとこの現象は収まりますのでバックグラウンドで*.mgmを勝手にキャッシングをしているのではないかと勘ぐっています。)もともとギャラリーが反応しないように拡張子をmgmに変更した様ですがうまくいっていない気がしています。みなさんはどうですか?

  8. RAMの使用状況は確認していないのですが、ギャラリーの件は解決策があります。わたしも、昨日対策を行ったところでして、今日か明日にでも新たにブログにエントリーしようと思っていたところです。
    ポイントは単純でWindows PCなどからMGMapsCacheディレクトリーに隠し属性を設定するというものです。基本的には、これでmgmファイルがギャラリーからは見えなくなります。ただ、やっかいなのはMGMapsCache下のmgmファイルを一度でも認識してしまうと、どこかで覚えていて隠し属性にしてもインデックスに現れてしまいます。そこを、うまく誤魔化してやれば大丈夫だと思います。

  9. 通りすがり @ 2007-06-24 11:12

    素早い回答ありがとうございます。早速MGMapsCacheフォルダを隠し属性にしてみました。結論はビンゴ!です。やはりギャラリー(正確にはMultimediaListというバックグラウンドタスクだと思われます)がminiSD内のメディアデータを勝手に検索してRAM上にキャッシングしているようです。MGmapsを快適に使うには「ギャラリーにmgmファイルを発見されないようにする」という事が必須のようです。書き込んでみて良かったです。ありがとうございました。

  10. [アプリ紹介] MGMapsのローカルマップを試す…

    コザックさんのところの情報を頼りにMGMapsのローカルマップ表示(アルファ版)を試してみました。 インストール方法はまた気が向いたらまとめますが、結論から言うとE6 (more…)

  11. 始めまして。Hayashiと申します。
    E61、E90両方でKKJConvにはお世話になりっぱなしです。お礼を申し上げるのが遅れ申し訳ありませんm(__)m

    今回、記事を参考にさせていただきながら地図を作成し、E90にも導入することができたので私のブログにて紹介させていただきました。

    問題がありましたら修正、消去いたしますのでお知らせ下さい。
    ありがとうございました!

  12. Hyashiさん、はじめまして。ブログ拝見いたしました。E90とっても、うらやましいです。 🙂

  13. はじめましてコザック様。dorichanともうします。

    こちらのblog大変参考になりました。perlの何かも全く判らない状態からはじめていろいろいじり倒してようやくまともに動くようになりました。
    ただまだいくつか問題があります。もしご存じでしたら御教授願います。

    一つはN73にmgmaps-1_35_02.jarをいれて正常に作動しておりますがmgmaps-1_36_00.jar以上のバージョンを入れると地図を認識しなくなります。

    二つめはアプリケーションのスイート設定でRead user data’と’Edit user data’の設定が’毎回確認’もしくは’許可しない’しか選べず、地図を移動するたびに毎回ユーザデータを読み込みますか?と質問されてしまいます。これを回避する方法はないのでしょうか?

  14. dorichanさん、こんにちは
    まず最初の問題ですが、私は古いバージョンを使い続けているので確認していませんが、ブログ「PDAとGPS」の以下の記事が参考になると思います。
    http://pdagps.asablo.jp/blog/2007/08/02/1696966

    二つめはjarとjadファイルの両方を持ってきてjadファイルを使って導入すると確認無しに地図データを読めるようになると思います。ただし携帯電話によっては、この方法での導入がうまく行かない物があります(実際にはmgmapsの署名に問題があるのかも)。その場合はどうにもならないように思います。

  15. 早速のご返答ありがとうございます。
    第一の問題は解決できました。二つめの問題はソフトバンクにシムロックのかかっているせいかだめでした。両ファイルを同じフォルダに入れてjadファイルでインストールしようとすると証明書エラーが出てだめでした。フォーラム上でも同じような人がいて、maptile読み込みのたびに確認のアラートが出るやつであきらめろみたいなことが書いてありました。
    快適に動くようになったのに残念です。お世話になりました。

Add your comment now