torutkのブログ

ソフトウェア・エンジニアのブログ

Windows Sensor and Location APIでGPSデバイスから座標を取得

Windows 7から、Sensor and Location APIが導入され、これに対応したGPSバイスを使うと標準APIを使って位置などを取得することが可能になります。MSDNの以下記事(日本語訳)参照。
Introduction to the Sensor and Location Platform in Windows | Microsoft Docs

それ以前は、シリアル通信(USBケーブルでGPSバイスと接続し、その上で仮想のシリアル通信を行うものが多い)でGPSバイスが垂れ流すNMEAフォーマットを解析して座標を取得していました。そのためには、シリアル通信の受信処理、NMEAフォーマットの解析と結構なプログラミングが必要でした。シリアル通信は、同時に一つのプログラムしか利用できないというデメリットもありました。

Location APIでは、複数のプログラムが並行してGPSバイスの情報を取得可能で、また位置(緯度経度)をAPIで取得できるというメリットがあります。

ただし、このLocation APIWindowsのCOM(Common Object Model)インタフェースで提供されるので、COM(ATL)プログラミングが必要になります。

また、GPSバイスのないマシンでは実行時にAPIがエラーを返すので、「規定の位置」を設定する必要がありますが、コントロールパネルからは緯度・経度を設定するUIがないのでチョット困りました。専用のプログラムを作る必要があるようですが、その設定プログラムを作って公開しているものを見つけました。

そのあたりの経緯を、以下に書きました。
http://www.torutk.com/projects/swe/wiki/Windows_Location_API

この後、JavaからWindowsのLocation APIを呼び出す方法を調査する予定です。