qgmap 0.1.1 リリース

ちょっと間が開きましたが、 qgmap の 0.1.1 をリリースします。 →ダウンロードページ

0.1.1 の新機能は以下のとおりです。

  •  フリーハンド地図取得範囲指定機能

これはコメント y 様から頂いたご要望で、GM_Lite で地図をダウンロードする際の取得コードを、qgmap 上で手書きで指定できるものです。

ちょっと分かりづらいので、画面で説明します。

まず、地図を取得したい範囲を画面に収まるように、移動&ズームします。
そして、「D」キーを押します。すると、以下の画面のようになります。

フリーハンド範囲指定モード
フリーハンド範囲指定モード

このモードに入ると、画面のスクロールやズームはできなくなります。
モードを抜けるにはもう一度「D」キーを押してください。

スタイラスで画面をなぞると、赤い線で範囲を指定することができます。
スタイラスを離すと、線で囲った領域が塗りつぶされます。

範囲の指定
範囲指定の様子

この様にして、取得したい領域を赤で塗りつぶした状態にしていきます。「BS」キーで無制限にアンドゥできます。

取得したい範囲を塗りつぶし終わったら、「OK」を押してください。
以下のダイアログが表示されます。

取得ズームレベル指定
保存範囲・形式指定ダイアログ

このダイアログで、取得するズームレベルの範囲を指定します。0が最詳細、19が最広域となります。
現在表示しているズームレベルも表示していますので、参考にしてください。

出力フォーマットは、シェルスクリプト形式 (down_imgs 用) と、per形式 (down_imgs.pl 用) が選べます。

指定が終わったら、OKキーを押してください。
指定した範囲の地図取得コードがクリップボードに保存されます。

メモ帳や、ZEditorなどのエディタにペーストして、お好きなファイル名で保存してください。

ZEditor にペーストした様子
ZEditor にペーストした様子

このコードを down_imgs や down_imgs.pl に貼り付けて実行することで、手書きで指定した範囲の地図を取得することができます。

 

余談になりますが、私にとってダイアログ等のGUIが鬼門のようで、この程度のダイアログなのにかなり時間がかかってしまいました ^^;
QDialog は QWindow と違って mainWidget (?) を指定できないせいか、Dialogのサイズに合ってくれなくて・・。setGeometory で固定的に配置してしまったのですが、こういうものなんでしょうか?
リサイズ時は自前で再配置しないといけないってこと?

あと、うまくダイアログが作れなくて、手抜きで Qt Designer でダイアログを作成して .ui ファイルを作成したのにその通りに表示されなくてゲンナリ・・・。
結局今回の開発にかかった時間の半分以上はダイアログまわりでした。
GUI は難しいですねぇ。

Ubuntu PC に Zaurus をUSBネットワークで繋げる

えーと、特に qgmap の進捗が無いので、小ネタを一つ・・・ (^^;

私の自宅パソコンでは Ubuntu 8.04 を使っているのですが、そのままでは zaurus と PC を付属のUSBケーブルで繋げても、USBネットワーク接続ができません。
確か、pdaXrom などの代替 OS なら繋がったような気がしますが、あまり需要がないのか、純正ROMの Zaurus はデフォルトでは認識されないのです。

ですが、カーネル自体には zaurus の USB ネットワークドライバは入っているので、ビルドしてあげれば USB ネットワークで繋げることが可能です。

手順
1. カーネルソースを取得する

現時点の Ubuntu 8.04 での最新カーネルは 2.6.24 ですので、ソースパッケージをダウンロード&インストールします。

$ sudo apt-get install kernel-source-2.6.24 

2. カーネルソースの展開

カーネルソースを作業ディレクトリ ~/kernel に展開します。

$ cd
$ mkdir kernel
$ cd kernel
$ tar xjf /usr/src/linux-source-2.6.24.tar.bz2

3. カーネルコンフィグの変更

現在のカーネルコンフィグをベースに zaurus ドライバを有効にします。2行目の config-2.6.24-19-generic は、アップデート等で変わる可能性があります。一番新しい(バージョンが大きい)ものを使用しておけば間違いないと思います。

$ cd linux-source-2.6.24
$ cp /boot/config-2.6.24-19-generic .config
$ make oldconfig
$ make menuconfig

設定画面になりますので、以下の階層をたどり、「Sharp Zaurus (stock ROMs) and compatible」でMキーを押下し、モジュール化指定<M>にします。

Device Drivers  --->
   Network device support  --->
     USB Network Adapters  --->
<M>   Sharp Zaurus (stock ROMs) and compatible

設定を保存して終了します。

4. カーネルモジュール(ドライバ)のコンパイル

すべてをコンパイルするとかなり時間がかかるので、最低限のモジュールだけビルドします。

$ make modules_prepare
$ make M=drivers/net/usb/ modules

特にエラーがでなければビルド成功です。

5. ドライバのインストール

インストールというより、単純にファイルをコピーしてしまいます。
パッケージ化するのも面倒だったので、そのままコピーしてしましました。

$ sudo cp drivers/net/usb/zaurus.ko /lib/modules/2.6.24-19-generic/kernel/drivers/net/usb/
$ sudo depmod -a

最後の depmod でモジュールデータベースを再構築するので、忘れずに実行してください。

以上で、ドライバのビルド&インストールは完了です。
zaurusとPCをつなげると、PC上では usb0 というインターフェースが見えるはずです。

ifconfig usb0 でIPを設定すれば使えるようになりますが、/etc/network/interfaces に以下の行を追加すると、USB接続時に自動で IP アドレスを設定するようになり、便利です。

10/19修正
auto usb0 → allow-hotplug usb0 に訂正しました。tera様ご指摘ありがとうございました!

allow-hotplug usb0
iface usb0 inet static
address 192.168.129.1
netmask 255.255.255.0

注意としては、カーネルのバージョンが上がった場合、また新しいカーネルでビルドしなおす必要があります。アップデート後にUSBネットワークが使えなくなった場合は、カーネルバージョンを確認して、ビルドしなおしてみてください。

以上、小ネタでした ^^;

qgmap 今後の開発予定

ようやく正式版の 0.1.0 をリリースできました。
これもひとえにtera様、y様、sugarware様を初め、他にも qgmap を使っていただいている方々のおかげです。
振り返って見ると、alpha1からちょうど1ヶ月位経つんですね。この1ヶ月でかなり qgmap も私も成長させていただきました。
改めて深く感謝申し上げます。ありがとうございました。

さて、一区切りついた qgmap ですが、まだまだ機能拡張は続ける予定です。
0.1.0 でクラス構成を大きく変更したおかげで、今までの地図画面に重ねて何かを表示することが簡単にできるようになりました。そのため、GPSの軌跡表示や、y様のご提案にあった、フリーハンドで範囲指定して GM_Lite の地図取得コードを出力するような機能が比較的容易に実装できるようになりました。

今のところ考えている機能は以下のとおりです。

  • フリーハンド地図取得範囲指定機能
  • 起動/終了時に自動的に gml_mount を実行
  • 「?」アイコン表示
  • PHS位置取得対応
  • GPS位置取得対応
  • 住所検索対応

ちょっと面白そうという個人的興味で、フリーハンド地図取得範囲指定機能を先に実装しようかなと思っています。
ちまちま作っていきますので、長い目で見守ってください。
これからもよろしくお願いします。

最近めっきり進捗の無い地図レシピも進めないとな・・・(^^;

qgmap 0.1.0 リリース

お待たせしました。ようやく正式リリース版の qgmap 0.1.0 をリリースします。ダウンロードはこちらから。

アルファを取ったついでに、バージョンの付け方をx.x.xの3つに変更しました。
理由は、あっという間にメジャーバージョンが上がってしまいそうだからです あっかんべー
大した機能も無いのに 8.5 とかじゃかっこ悪いので。 0.8.5の方がしっくりくるかなと。

新規機能はほとんどありません。

  • 画面外マーカの表示方法の切り替え (Shift+Mキー)
  • ヘルプメッセージを更新
  • 画面外マーカの位置を微調整

区切りを付けるための、alpha7のブラッシュアップ版という位置付けです。

ただ、ソースはかなり大幅に変更されています。

今後改良しやすいように機能毎にクラス分けしました。
一番大きな改良が、各クラスが画像を重ね合わせていくクラス(LayeredWidget)の実装です。
初めは、Qt の Widget 配置でスライダや縮尺表示などを作っていこうと思っていたのですが、下の Widget が透けるようなアルファチャンネルを持つ透明な Widget が作れなかったため、自前で新しい描画システムを実装してしまいました。
と言ってもただ1枚のQPixmapに各々が描画していくだけですが (^^;

この改造で、画面上に表示するアイテムを増やすときのコーディングが楽になったはず。
GPSロガーの軌跡表示とかも、比較的楽に実装できるかも??

qgmap 開発メモ – 0.1 リリースへ向けて

まだまだ足りない所も多いものの、機能的にだいぶ充実してきて最低限常用できるアプリになってきたので、そろそろ 0.1 リリースに向けてソースを整理しようかなと。

今まではとにかく動くことを第一に、なりふり構わず機能追加してきたので、コード的に綺麗じゃないのでこの辺を直したいな。

特に、GMapクラスがすべての機能を抱えすぎていて肥大化しているので、それぞれの機能毎にクラスを分けたい。
C++というか、オブジェクト指向自体が初心者なので、綺麗なクラス分けとかどうすればいいのか分からないけど、今が汚いのは分かるので、自分なりに綺麗なコードにして 0.1 のリリースにしたいなと。

ということで、今日は丸一日既存コードのリファクタリングだ! ひとりハッカソン的なノリで。

alpha7 から 0.1 への変更点の予定は以下のとおり。

  • ヘルプ表示の更新
    Fn+Cとかが載ってない・・・
  • 画面外マーカ表示モードの切り替え
  • あまりに遠いマーカは非表示に
    数画面以上離れているマーカは非表示でもいいかも  (teraさんのコメントを参考に)
  • ソフトウェア構造の一新!

さすがに今日中リリースは無理だな (^^;
連休明けくらいにはリリースできればいいな。