情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

JavaScriptでGeolocation APIを使って位置情報を取得する

利用可能か

Geolocation APIが利用可能であるかチェックするにはnavigator.geolocationが存在するかチェックします。

if (navigator.geolocation) {
}
else {
}

Geolocation APIが利用可能である場合にはnavigator.geolocationが存在し、利用不可能である場合には存在しません。

なお、Geolocation APIが利用可能である場合、navigator.geolocationにはGeolocation APIの機能を利用するための関数を提供しているオブジェクトが格納されています。

すなわち、このオブジェクトの関数を使用して現在位置の取得を行います。

現在位置の取得

クライアントの現在位置を取得するにはnavigator.geolocation.getCurrentPosition関数を使用します。

navigator.geolocation.getCurrentPosition(function (position) {
}, function (err) {
}, {
    enableHighAccuracy: true, 
    timeout: 1000, 
    maximumAge: 1000
});

第1引数に現在位置の取得が成功した場合に呼び出される関数を指定します。この関数の第1引数は現在位置を表すオブジェクトです。

このオブジェクトは下のようなプロパティを有します。

  • coords.latitude・・・度単位の緯度です。
  • coords.longitude・・・度単位の経度です。
  • coords.altitude・・・メートル単位の高度です。
  • coords.accuracy・・・緯度と経度のメートル単位の精度です。
  • coords.altitudeAccuracy・・・高度のメートル単位の精度です。
  • coords.heading・・・度単位の方角です。0が北を表し、時計回りで度数が大きくなります。
  • coords.speed・・・速度です。
  • timestamp・・・日時です。

第2引数に現在位置の取得が失敗した場合に呼び出される関数を指定します。この引数は指定しなくても構いません。この関数の第1引数はエラーオブジェクトです。このエラーオブジェクトはエラーの種類を表すcodeプロパティとエラーメッセージを表すmessageプロパティを有します。codeプロパティの値は下のようになります。

  • 0・・・不明なエラーです。
  • 1・・・ユーザが取得を許可しませんでした。
  • 2・・・取得に失敗しました。
  • 3・・・取得がタイムアウトしました。

第3引数にオプションをオブジェクトとして指定します。この引数は指定しなくても構いません。

主なオプションには下のようなものがあります。

  • enableHighAccuracy・・・精度の高いデータを取得する場合にはtrueを指定します。
  • timeout・・・現在位置の取得がタイムアウトする時間をミリ秒単位で指定します。
  • maximumAge・・・データをキャッシュする時間をミリ秒単位で指定します。

現在位置の追跡

クライアントの現在位置を追跡するにはnavigator.geolocation.watchPosition関数を使用します。

var wp = navigator.geolocation.watchPosition(function (position) {
}, function (err) {
}, {
    enableHighAccuracy: true, 
    timeout: 1000, 
    maximumAge: 1000
});

第1引数の関数が繰り返し呼び出されるという点以外はnavigator.geolocation.getCurrentPosition関数と同じです。

ただし、返り値として現在位置を追跡する処理を表すオブジェクトが得られます。

現在位置の追跡の終了

クライアントの現在位置の追跡を終了するにはnavigator.geolocation.clearWatch関数を使用します。

navigator.geolocation.clearWatch(wp);

第1引数にnavigator.geolocation.watchPosition関数の返り値として得られる現在位置を追跡する処理を表すオブジェクトを指定します。

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-Javascript