モダンブラウザで使う「Geolocation API」後編 このエントリをはてなブックマークに登録

2010年07月26日

もりもりもりもり / , , , , , , , ,


もりやまです。
前回は「Geolocation API」の概要と、実際に使ってみたデモを紹介しました。
今回はもう少し突っ込んで、各 API の説明と、住所入力フォームへ現在の位置情報から参照した住所を自動入力するデモを紹介します。


API

void getCurrentPosition(successCallback, errorCallback, options)

  • function successCallback
    成功時に呼ばれるコールバック関数。引数に Position オブジェクトを取る。必須
  • function errorCallback
    エラー時に呼ばれるコールバック関数。引数に PositionError オブジェクトを取る。

long watchPosition(successCallback, errorCallback, options)

  • function successCallback
    成功時に呼ばれるコールバック関数。引数に Position オブジェクトを取る。必須
  • function errorCallback
    エラー時に呼ばれるコールバック関数。引数に PositionError オブジェクトを取る。
  • 返り値
    watchId。

void clearWatch(watchId)

  • long watchId
    watchPosition で取得した watchId。必須

オブジェクト

PositionOptions

  • boolean enableHighAccuracy
    より正確な値が必要な場合のフラグ。
    取得にかかる時間が増えたり、バッテリーの消費量が増えるかもしれない。
    ただし、必ずしも正確な値が取得できるようになるわけではない。
  • long timeout
    タイムアウトまでの時間(ミリ秒)。
    タイムアウトした場合は errorCallback がコールされる。
  • long maximumAge
    キャッシュの取得を許可する時間(ミリ秒)。
    取得時に指定した時間を経過していないキャッシュが存在すればそれを返す。
    0 を指定すると必ず取得を行い、Infinity を指定すると必ずキャッシュを返す。
    watchPosition() の場合には、最初の取得時にのみ影響する。

Position

  • Coordinates coords
    Coordinates オブジェクト。
    測地系は世界測地系(WGS84)。
  • DOMTimeStamp timestamp
    取得日時。

Coordinates

  • double latitude
    緯度。表記は 10 進。
  • double longitude
    経度。表記は 10 進。
  • double altitude
    高度。表記は 10 進。
    取得できなかった場合は null。
  • double accuracy
    緯度経度の精度。単位はメートル。
  • double altitudeAccuracy
    高度の精度。単位はメートル。
    取得できなかった場合は null。
  • double heading
    進行方向。真北を基準に時計回りで示した角度。
    取得できなかった場合は null。
  • double speed
    速度。単位はメートル/秒。
    取得できなかった場合は null。

PositionError

  • unsigned short code
    エラーコード。取りうる値は以下の通り

    • UNKNOWN_ERROR
    • PERMISSION_DENIED
    • POSITION_UNAVAILABLE
    • TIMEOUT
  • DOMString message
    エラーメッセージ。

現在地を住所入力フォームに自動入力

前編で使用したデモに住所の取得まで実装してあったので、あまり目新しさはないのですが、PC のブラウザで位置情報を使う実例としてはいいかなと思って作ってみました。

http://hawk.kray.jp/glapi_demo/form.html

「現在地から住所を入力」のリンクをクリックすると Geolocation API で位置情報を取得して、その位置情報から Google Maps の Geocoder を使って住所の候補を取得します。

取得した候補がプルダウンで選択できるので、最も近い住所を選択して「今ココ!」をクリックします。

選択した住所が送信用のフォームに入力されます。弊社の住所は武蔵野市御殿山なのですが、道の反対側の住所の候補しか取得できませんでした。


Coordinates オブジェクトから緯度経度以外の情報も取れるようですが、確認した限りではほとんどのブラウザが latitude / longitude / accuracy 以外は未実装のようです。
Firefox 3.6.8 だけが altitude / altitudeAccuracy にゼロを返してきましたが、これはちょっとアテになるかどうかわかりませんでした。
この辺りの情報もきちんと取れるようになると、さらに可能性が広がって面白いことができそうです。今後の各ブラウザの実装に期待したいと思います。

Geolocation API Specification
http://www.w3.org/TR/geolocation-API/

  1. メモからはじめる情報共有 DocBase 無料トライアルを開始
  2. DocBase 資料をダウンロード

「いいね!」で応援よろしくお願いします!

このエントリーに対するコメント

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


トラックバック
  1. モダンブラウザで使う「Geolocation API」後編 | KRAY Inc | とっても! ちゅどん(雑記帳)2010/07/26, 4:42 PM

    […] モダンブラウザで使う「Geolocation API」後編 | KRAY Inc […]

we use!!Ruby on RailsAmazon Web Services

このページの先頭へ