useGeolocation
useGeolocation は、ユーザーの位置情報を取得・追跡する React フックです。 ブラウザーの Geolocation API を使い、一度限りの位置情報の取得と継続的な追跡の両方に対応します。
インターフェース
function useGeolocation(options?: GeolocationOptions): Object;パラメータ
- optionsGeolocationOptions
位置情報の取得に関する設定オプション。
- options.mountBehaviorGeolocationMountBehaviorType
マウント時のフックの動作。
- 指定しない場合、位置情報を自動では取得しません。
-get:コンポーネントのマウント時に位置情報を自動で一度取得します。
-watch:コンポーネントのマウント時に位置情報の変化の追跡を自動で開始します。 - options.enableHighAccuracyboolean · false
true の場合、より正確な位置情報を提供します(バッテリー消費が増えます)。
- options.maximumAgenumber · 0
キャッシュされた位置情報を返してよい、取得後の最大経過時間(ミリ秒単位)。
- options.timeoutnumber · Infinity
位置情報のリクエストに許容する最大時間(ミリ秒単位)。
- options.mountBehaviorGeolocationMountBehaviorType
戻り値
- Object
位置情報のデータと関連する関数を含むオブジェクト。
- loadingboolean
位置情報を現在取得中かどうか。
- errorCustomGeoLocationError|null
エラーが発生した場合はエラーオブジェクト、それ以外は null です。このフックは標準の Geolocation API のエラーコード(
1-3)に加え、独自のコード(0)を使用します。
:0- 実行環境が位置情報の取得に対応していません。
:1- ユーザーが位置情報へのアクセスを拒否しました。
:2- 位置情報を取得できません。
:3- タイムアウト:位置情報のリクエストに時間がかかりすぎました。 - dataGeolocationData|null
位置情報のデータオブジェクト、または null。
: latitudenumber- 十進数の度数で表した緯度。
: longitudenumber- 十進数の度数で表した経度。
: accuracynumber- 位置の精度(メートル単位)。
: altitudenumber|null- WGS84 楕円体を基準とした高度(メートル単位)。
: altitudeAccuracynumber|null- 高度の精度(メートル単位)。
: headingnumber|null- 真北から時計回りの角度(度単位)で表した進行方向。
: speednumber|null- 速度(メートル毎秒)。
: timestampnumber- 位置情報を取得した時刻。 - getCurrentPositionFunction
現在の位置情報を一度取得する関数。
- startTrackingFunction
位置情報の変化の追跡を開始する関数。
- stopTrackingFunction
位置情報の追跡を停止する関数。
- isTrackingboolean
位置情報の追跡が現在有効かどうか。
- loadingboolean
使用例
// 基本的な使い方
const { loading, error, data, getCurrentPosition } = useGeolocation();
// コンポーネントのマウント時に位置情報を自動で取得します
const { loading, error, data } = useGeolocation({ mountBehavior: 'get' });
// 位置情報の追跡
const { loading, error, data, startTracking, stopTracking, isTracking } =
useGeolocation();
const handleStartTracking = () => {
startTracking();
};
const handleStopTracking = () => {
stopTracking();
};