GPSデータを取得
JavaScriptでGPSデータを取得してみましょう。Safariに搭載されているGPS関連機能はW3C(World Wide Web Consortium)のGeolocation APIに準拠しています。手元にiPhoneがない方はGeolocation APIをサポートしているFirefox 3.5でテストするとよいでしょう。
●Geolocation API Specification
http://www.w3.org/TR/geolocation-API/
ブラウザーがGeolocation APIに対応している場合は、navigatorオブジェクト内に geolocationオブジェクトが用意されています。geolocationオブジェクトには、現在地の位置情報を求めるためのメソッドが用意されています。
- navigator.geolocation.getCurrentPosition()
- 現在の位置情報
- navigator.geolocation.watchPosition()
- 現在地を定期的に監視
- navigator.geolocation.clearWatch()
- watchPosition()での監視を中止
今回は定期的に位置情報を取得するので watchPosition() を使います。watchPosition() は位置情報を取得したら、最初のパラメーターに指定された関数を呼び出します。たとえば、watchPosition(update) とすると位置情報を取得したら update関数が呼び出されることになります。
呼び出された関数には位置情報を示すオブジェクトがパラメーターとして渡されます。このオブジェクト内には以下の位置情報が格納されています。
- position.coords.latitude
- 緯度
- position.coords.longitude
- 経度
- position.coords.altitude
- 高度
- position.coords.accuracy
- 水平方向の誤差
- position.coords.altitudeAccuracy
- 垂直(高さ)方向の誤差
- position.coords.heading
- 方向
- position.coords.speed
- 速度
※渡されたオブジェクト名が position の場合
ただし、iPhone 3Gではこれらすべての値を取得できるわけではありません。たとえば「高度」や「垂直(高さ)方向の誤差」には対応していません。