もりやまです。
前回は「Geolocation API」の概要と、実際に使ってみたデモを紹介しました。
今回はもう少し突っ込んで、各 API の説明と、住所入力フォームへ現在の位置情報から参照した住所を自動入力するデモを紹介します。
API
void getCurrentPosition(successCallback, errorCallback, options)
- function successCallback
成功時に呼ばれるコールバック関数。引数に Position オブジェクトを取る。必須。
- function errorCallback
エラー時に呼ばれるコールバック関数。引数に PositionError オブジェクトを取る。
- PositionOptions options
オプション。
long watchPosition(successCallback, errorCallback, options)
- function successCallback
成功時に呼ばれるコールバック関数。引数に Position オブジェクトを取る。必須。
- function errorCallback
エラー時に呼ばれるコールバック関数。引数に PositionError オブジェクトを取る。
- PositionOptions options
オプション。
- 返り値
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/
このエントリーに対するコメント
日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)
- トラックバック
-
- モダンブラウザで使う「Geolocation API」後編 | KRAY Inc | とっても! ちゅどん(雑記帳)2010/07/26, 4:42 PM
[…] モダンブラウザで使う「Geolocation API」後編 | KRAY Inc […]
「いいね!」で応援よろしくお願いします!