qgmap 0.1.4 リリース

本当に久しぶりになってしまいましたが、qgmap をリリースします。→ダウンロードページ
2ヶ月ぶりですか。あいだ空きすぎですね (^^;

今回ようやくGPSに対応しました。といっても最低限の機能しかありませんが。。。

ひとまず現在位置を取得して、そこに移動する機能のみを実装しました。
ログ機能すらありません。いろいろな機能はこれから追加していきます。
GPSのログ取得やスレッド関係は HB1 様の Zega を参考にさせていただきました(^^)
すばらしいソフトとそのソースを公開していだたき感謝感謝です。

GPS機能を使用するには、まずGPSの設定が必要です。
左上のアイコンをクリックすると表示されるメニューの「GPS Settings」を選択します。

GPS設定メニュー
GPS設定メニュー

すると、次のようなダイアログが表示されます。

GPS設定ダイアログ
GPS設定ダイアログ

各設定の意味は以下の通りです。

  • GPS Device
    • GPS機器が接続されているデバイスファイルを指定します。
      Zega でいう、devFile 相当です。
  • PreCommand
    • GPS接続を行う前に実行するコマンドです。
      Zegaでいう、startGpsCommand 相当です。
  • PostCommand
    • GPS接続を切断した後に実行するコマンドです。
      Zegaでいう、stopGpsCommand 相当です。
  • 更新間隔
    • 画面を更新する間隔です。GPSが出力する間隔に関係なく、この設定で指定した間隔で画面が更新されます。
  • 測地系
    • GPS機器が出力する緯度・経度の測地系を指定します。
  • 時差
    • 現在地の時差を指定します。この時差を補正して測位時間を表示します。

基本的に、Zega で使用できている方は、devFile 指定を GPS Device に、startGpsCommand を PreCommand に、stopGpsCommand を PostCommand に指定すれば動くと思います。たぶんですが。

設定を行ったら、「G」キーで GPS 受信を開始します。
GPS受信モードに入ると、画面の左上に以下のような小窓が表示されます。

GPS情報表示
GPS情報表示

左上から右方向に、受信している衛星数、受信時刻、緯度、経度が表示されます。

緯度・経度が受信できると現在地を中心に表示します。スクロールしても強制的に現在地に戻されます。この辺は徐々に改良していきます。

GPS関連では今後、以下の項目を追加・改良したいと思っています。

  • 標高、移動速度、移動方位表示
  • 現在地自動センタリングのON/OFF切り替え
  • 現在地に移動方向を三角マーカで表示(カーナビのように)
  • NMEAログ保存機能
  • 移動軌跡表示

GPS機器は、M-241 と uPod で確認していますが、他の機器で使えるか不安ですので、試してみたかたは、動作した/しない関わらず、コメントに動作報告を頂けるとありがたいです。よろしくお願いします!

そろそろ機能が増えてきたので使い方をまとめないと・・・。

qgmap 0.1.3 リリース

久しぶりに qgmap をリリースします。(→ダウンロードページへ)

今回の修正点は以下の2つです。

  • ダブルタップでセンタリング (sugarware様ご要望)
  • 地図画像のガンマ補正 (青嵐様ご要望)

他にも tattsu 様からPHS位置取得の精度向上のパッチを頂いていたのですが、外を回ってテストをする時間がなくて、今回は見送らせていただきました。

ダブルタップの方は結構前になってしまいますが、sugarware様から頂いたご要望です。大変お待たせしました。
ちょっと遊び心で本物の GoogleMaps のセンタリングのようにスクロールしながらタップした位置に移動します。
ただ、Qtopiaの仕様(?)か、ダブルタップと認識されにくく、ちょっとコツが要るようです。
ダブルクリックよりは気持ちゆっくり目に、「ポン、ポン」とタップすると認識されやすい気がします。

2つ目は、青嵐様ご要望のガンマ補正機能です。こちらは重くなりそうだなと思いながらも調べていると、GoogleMaps の PNG 画像は 8bit パレットなので、パレットを変更してしまえば画素をいじること無く簡単に色を変えられることに気づき、実装してしまいました。

設定は、左上のアイコンから

 メニュー

「Gamma」を選択します。(ようやく2つ目のアイテムが追加されてメニューらしくなりました^^;)

すると、ガンマ補正のダイアログが表示されます。

ガンマ補正

スライダで補正値を変更すると、後ろの画像でプレビューすることができます。
「OK」を押せば設定が適用されます。もちろん次回起動時も反映されます。

個人的には、ガンマ補正値が 0.5 前後くらいが見やすいかなと思います。
屋外、屋内など、見る状況により変更するといいかもしれません。

改めて見てみると 0.1.2 をリリースしてからもう3週間も間が開いていたんですね・・・。
主にGW-CF54Gドライバの方を作業していたので間が開いてしまっていたのですが、少なくても1ヶ月に1回は更新したいですね。
まだまだ足りない機能がいっぱいあるので。

次はいよいよ GPS に手を出す予定です。いまのところは (^^;

qgmap 0.1.2 リリース

qgmap 0.1.2 をリリースします。→ダウンロードページ
最近は GW-CF54G のドライバをいじっていたりしたので、また間が開いてしまいました ^^;

今回の変更点は以下のとおりです。

  • PHS位置取得機能
  • フリーハンド範囲指定機能でメモリ不足になる問題を修正
    (bxk07344 様ご報告ありがとうございます)
  • 緯度経度指定ジャンプ機能のバグを修正
    (みじま様ご報告ありがとうございます)
  • 描画処理の見直し (若干高速化された?)

今回の目玉機能は PHS 位置取得機能です。
bitWarp を含む、WILLCOM のインフラを使った PHS カードで位置情報を取得します。
ちなみに、bitWarp等に契約していなくてもカードさえあれば位置情報は取得できます(たぶん)。
ダイアルするわけではないので通信料金もかかりません(たぶん)。

PHSカードがスロットに挿してある状態で「P」キーを押すと近くのPHSアンテナの位置情報を取得し、その位置へスクロールします。アンテナの位置を示しますので、現在位置と大きく異なる可能性があります。参考程度に考えてください。

PHSカードで現在位置取得
PHSで現在位置取得

バグフィックスとしましては、bxk07344様にご報告いただいたメモリ不足の問題と、みじま様にご報告頂いた緯度経度していジャンプ機能の計算ミスを修正しています。

また、画面描画処理(paintEvent)を、必要な部分のみ行うように修正しました。
これにより、若干スクロールが高速になっています。
マーカをOFFにすると、特に高速化を実感できると思います。

 

今回も苦手なダイアログ (PHS位置取得時の進捗ダイアログ) を実装しています。
前回 tera 様に教えていただいたため、widget の配置はすんなりいったのですが、ダイアログの「OK」ボタンを消す方法が分からず、上記のスクリーンショットの通り、OKボタンが表示されたままです ^^;

ちなみに、PHS位置取得機能のATコマンドや pppd, chat コマンドの使い方は tera 様の gm_lite の phs_zau のコマンドラインをそのままパクってます ^^;

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 は難しいですねぇ。

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ロガーの軌跡表示とかも、比較的楽に実装できるかも??