Skip to content

useGeolocation ​

useGeolocation は、ユーザーの位置情報を取得・追跡する React フックです。 ブラウザーの Geolocation API を使い、一度限りの位置情報の取得と継続的な追跡の両方に対応します。

インターフェース ​

ts
function useGeolocation(options?: GeolocationOptions): Object;

パラメータ ​

  • optionsGeolocationOptions

    位置情報の取得に関する設定オプション。

    • options.mountBehaviorGeolocationMountBehaviorType

      マウント時のフックの動作。
      - 指定しない場合、位置情報を自動では取得しません。
      - get:コンポーネントのマウント時に位置情報を自動で一度取得します。
      - watch:コンポーネントのマウント時に位置情報の変化の追跡を自動で開始します。

    • options.enableHighAccuracyboolean · false

      true の場合、より正確な位置情報を提供します(バッテリー消費が増えます)。

    • options.maximumAgenumber · 0

      キャッシュされた位置情報を返してよい、取得後の最大経過時間(ミリ秒単位)。

    • options.timeoutnumber · Infinity

      位置情報のリクエストに許容する最大時間(ミリ秒単位)。

戻り値 ​

  • Object

    位置情報のデータと関連する関数を含むオブジェクト。

    • loadingboolean

      位置情報を現在取得中かどうか。

    • errorCustomGeoLocationError|null

      エラーが発生した場合はエラーオブジェクト、それ以外は null です。このフックは標準の Geolocation API のエラーコード(1-3)に加え、独自のコード(0)を使用します。
      : 0 - 実行環境が位置情報の取得に対応していません。
      : 1 - ユーザーが位置情報へのアクセスを拒否しました。
      : 2 - 位置情報を取得できません。
      : 3 - タイムアウト:位置情報のリクエストに時間がかかりすぎました。

    • dataGeolocationData|null

      位置情報のデータオブジェクト、または null。
      : latitude number - 十進数の度数で表した緯度。
      : longitude number - 十進数の度数で表した経度。
      : accuracy number - 位置の精度(メートル単位)。
      : altitude number|null - WGS84 楕円体を基準とした高度(メートル単位)。
      : altitudeAccuracy number|null - 高度の精度(メートル単位)。
      : heading number|null - 真北から時計回りの角度(度単位)で表した進行方向。
      : speed number|null - 速度(メートル毎秒)。
      : timestamp number - 位置情報を取得した時刻。

    • getCurrentPositionFunction

      現在の位置情報を一度取得する関数。

    • startTrackingFunction

      位置情報の変化の追跡を開始する関数。

    • stopTrackingFunction

      位置情報の追跡を停止する関数。

    • isTrackingboolean

      位置情報の追跡が現在有効かどうか。

使用例 ​

tsx
// 基本的な使い方
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();
};

MIT ライセンスの下で配布されています。