EMONSTERで動くGPSアプリ作成
EMONSTERを買って2ヶ月ほどたちました。
最近プライベートで、EMONSTERで動く「モバイルGoogle Maps」もどきのアプリを作っています。
以前はPocketPC 2003の東芝「Genio e830w」を持っていました。
VAIO TypeU(UX50)と一緒に購入したBluetoothのGPSユニット「VGP-BGU1」からシリアル通信でNMEAログを取得し、NMEA文字列を解析してゴルフ場ナビソフトのようなものを.NET Compact Frameworkで作った経験があります。(※公開はしていません)
画面上でピン(旗)の位置を設定し、GPSから取得した自分の現在位置との距離を計算することで残り何ヤードかが分かります。
また任意位置をタップすることで、
- 現在位置からタップした位置までの距離
- タップした位置からピンまでの距離
が計算されます。
※池まで何ヤード? あのバンカーを越えるには何ヤード必要? という場合に便利
.NET CFを使用しているだけあってアプリの作成自体は短期間で完成しましたが、地図を作るのが大変でした。
国土地理院のサイトから地図&航空写真をダウンロード(またはGoogle Earthの画像をコピペ)
↓
Photoshopで編集 (これが一番大変!)
※地図と航空写真を重ね合わせ、ゴルフ場のコースを手作業で描く
↓
地図画像の座標値と緯度経度座標をマッチング(2点または3点)
※ソフト上でアフィン変換を行うため
※上が真北の地図ならば2点(X1 != X2)でOK
※上が真北にならない回転した地図の場合は、1直線とならない3点を指定する
ひとつのコース(18ホール)作るのに丸1日かけてコース地図を作成していました(汗
Genio e830w はバッテリーの持ちが悪いのでBluetoothを使用していると1ラウンド持たないと思い、大容量バッテリー(1万以上したと思います)も購入しました。
その結果、コース作成に苦労するだけでなく、デカイ&重いという3重苦から実践投入すること無くお蔵入りになってしまいました。
ところが最近になって、Google Mapsでゴルフ場を拡大するとコース図まで表示されるようになっていることに気付きました。
EMONSTERならば高速通信で、しかもパケ代もあまり気にすることはありません。
「これは利用しない手は無い!」ってことで、オンラインでGoogle Mapsの地図画像をダウンロードできるようなものを作ることにしました。
GPSも内蔵しているので、GPSAPIを利用しています。
また、.NET CFはどうも動作が鈍い感があるので、今回はWin32で作成しています。
製作途中ですが、こんな感じ。
これらの画像はエミュレータ上での画像ですが、実機でもとりあえず動作しています。
ゴルフ関連の機能(距離計測やスコア管理など)は今後追加していく予定ですが、現状でも「モバイルGoogle Maps」と大差ありません。(場所検索機能は作っていないので、それだけでも大差あるか。。。
無駄なパケット通信を避けるため、一度ダウンロードした画像はキャッシュとして保存しています。
ひとつのタイルが64x64のPNGファイルとなっており、1000枚分まで保存できるようにしています。
画像ファイルとして1000枚するのではなく、GoogleMapsからのダウンロード情報を1つのファイルとして保存しています。
とりあえず自己満足アプリなので、公開の予定はありませんが。。。
ところで、GPSAPIはNMEA文字列を解析する手間が無くて便利なのですが、NMEA文字列は取得できないのかな?
追記 (2008/11/12)
シリアル通信でCOM4から普通に取得できました。。。
追記 (2009/9/30)
Google Map API以外のアプリからのタイルへのアクセスは規約に反しているようです。
最近ではこの方法でタイルを取得しようとするとブロックされてしまいます。
| 固定リンク
「プログラミング」カテゴリの記事
- EMONSTERで動くGPSアプリ作成(2008.06.06)
- MFCのMDIで、起動時に空のウィンドウが表示されないようにするには(2009.01.09)
- エディットコントロールのSetSel(2008.02.06)
「備忘録」カテゴリの記事
- EMONSTERで動くGPSアプリ作成(2008.06.06)
- MFCのMDIで、起動時に空のウィンドウが表示されないようにするには(2009.01.09)
- エディットコントロールのSetSel(2008.02.06)







コメント
はじめまして、西村といいます。
ネットをさまよいましてこのブログにたどり着きました。こちらの記述で、Google Mapsでゴルフコースが表示されるのを初めて知りました。そこで突然ではございますが、このソフト公開して頂けませんでしょうか。当方snp と aximx51v htc p3600 (gps内蔵)を所有していますので公開の暁には動作確認程度のご協力はできるかと思います。不躾ではありますが是非ともご検討お願いします。
投稿: 西村 | 2008年12月14日 (日) 21時58分
西村様
コメントありがとうございます
申し訳ありませんが、現状は公開する予定はありません。
はずかしながらこのソフトはバグだらけでして、なんとなく動作するのを確認してから開発がストップしている状況です。
連続して使用しているとフリーズしてしまいます。
まあ、原因はまちがいなくメモリリークなのですが。。。
そもそも個人的な興味で作ったソフトなので、デバッグまでする気力がなくなってしまいました。
また、Googleが正規に公開している「Google Maps API」によってデータを取得しているわけではなくて、URLを算出して地図画像を直接ダウンロードしています。この取得方法がセーフかアウトか、私自身確認しておりません。(※Google Mapsの規約をきちんと読んでいるわけではないので。。。)
とりあえず、モバイルGoogle Mapsでもゴルフ場のコース表示がされますので、コース確認には利用できるかと思います。
折を見て、新バージョンの開発でもしてみようかと思います。
(このようなコメントをいただくと、少しやる気が出てきました。)
投稿: moto33 | 2008年12月15日 (月) 18時12分
早速のご返答ありがとうございます。
そうですか、公開はありませんか。残念です。
無理を言って申し訳有りません。
当方、測量業界に身を置く者ですが、最近の
gps(民生用)の精度や測定の速度には驚くばかりです。
又、ゴルフの同行者に非常にマニアックな人物がいまして、ヤーデージブックを自作されているようです。
その方との話題作りになればと思い無理をお願いした次第です。
新バージョンの開発、期待しております。その折りには是非とも公開よろしくお願いします。(笑)
それでは。西村@やっとこさ仕事終了です。
投稿: 西村 | 2008年12月16日 (火) 04時27分
こんにちは
|また、Googleが正規に公開している「Google Maps API」に
|よってデータを取得しているわけではなくて、URLを算出して
|地図画像を直接ダウンロードしています。
のURL算出方法について教えていただけませんか?
特に,ズームレベル18,19にも対応した方法が見つからず
難儀しております.
m(_ _)m
投稿: なおき | 2009年2月11日 (水) 16時01分
なおき様
コメントありがとうございます。
返事がおそくなってスミマセン。
最近PCを新調したので、開発環境を整えるのに手間取っていました。
ズームレベル17以下では上手くいっているという前提でお答えします。
私の環境では18,19共に地図画像をDLできました。
(以前は19はDLできなかった気がするけど。。。)
PNGのファイルサイズが3バイトのものは1色ベタ塗りのタイルで、その3バイトはRGB値ってご存知でしたか?
(ご存知でしたら失礼しました。。。)
私はこれに気づくのに小一時間悩みました。
特にズームレベルが高くなると、ベタ塗りタイル画像の出現率が高くなります。
投稿: moto33 | 2009年2月16日 (月) 19時39分