qgmap 0.1.5 リリース

qgmap の新版をリリースします。→ダウンロードページ

今回は主に GPS 関連の変更です。

  • GPS位置追従/追従解除が可能に
    (v0.1.4では強制追従でした)
  • GPS位置が取得できていないときは移動しないように変更
    (南米に飛ばされなくなりました)
  • 三角マーカでGPS取得位置と移動方向を表示(カーナビのように)
  • GPS情報ウィンドウに移動速度、移動方向、標高を追加
  • 地図閲覧の邪魔にならないようにGPS情報ウィンドウを右下隅に表示
  • 「Menu」キーでポップアップメニュー表示
  • 「Map Path」メニューの地図データディレクトリ選択ダイアログで
    SDカードとCFの認識が間違っていたバグを修正

項目は多いですが、細々とした変更が多いです。

今回の目玉は、三角マーカによる現在位置表示機能です。 目玉というほどの機能ではないですが(^^;

マーカ表示
現在位置のマーカ表示

カーナビのようにマーカの向きは移動方向を示しています。

0.1.4 の時はGPSで取得した現在位置で強制的にセンタリングされていましたが、現在位置の追従/非追従を切り換えられるようになりました。

「G」キーを押した時は追従モードになっています。右下のGPS情報ウィンドウの右上にロックアイコンが表示されます。
スタイラスやカーソルキー、0〜9キーで画面を移動させるとロックが解除され、GPSの取得位置に追従しなくなります。(ロックアイコンも消えます)
スペースキーを押せば再び追従します。

GPS情報ウィンドウ
右上にロックアイコン 下に移動速度・方向、標高表示を追加

また、地味に移動速度、移動方向、標高表示に対応しました。

あと、ディレクトリ選択ダイアログを実装してから今までまったく気づいていなかったのですが、「Map Path」で開くディレクトリ選択ダイアログで CF と SD カード認識の判定が逆になってたので修正しました。
SDカードを挿しているとCFとして認識し、CFを挿しているとSDと認識するという、何ともお粗末なバグでした。

ようやくこれでなんとかGPS端末として最低限の機能が実装できたかな・・・?

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