このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

位置情報 API

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。

安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

位置情報 API (Geolocation API) を使用すると、ユーザーが望む場合に、自分の位置情報をウェブアプリケーションに提供することができます。プライバシー上の理由から、ユーザーは位置情報を報告する許可を求められます。

WebExtension で Geolocation オブジェクトを使用するには、マニフェストに "geolocation" パーミッションを追加しなければなりません。ユーザーのオペレーティングシステムは、最初に要求されたときに位置情報へのアクセスを許可するようにユーザーに促します。

メモ: <geolocation> 要素は、地理的な位置情報データへのアクセスと処理のためのもう一つの仕組みを提供し、位置情報 APIのいくつかの欠点を解決します。一貫した UI と、より直感的な権限管理プロセスを提供します。

概念と使用方法

ウェブアプリでユーザーの位置情報を取得したいと思うことはよくあります。例えば、ユーザーの位置を地図上にプロットしたり、ユーザーの位置に関連するパーソナライズされた情報を表示したりすることができます。

位置情報 APIは navigator.geolocation への呼び出しを介してアクセスします。これにより、ブラウザーはユーザーに自分の位置情報にアクセスする許可を要求します。ユーザーが許可すると、ブラウザーは端末上で利用可能な最良の機能(GPS など)を使用してこの情報にアクセスします。

開発者は、いくつかの異なる方法でこの位置情報にアクセスできるようになりました。

どちらの場合も、メソッド呼び出しには最大 3 つの引数を取ります。

  • 成功コールバック(必須): 位置情報の取得に成功した場合、このコールバックが GeolocationPosition オブジェクトを唯一の引数として実行され、位置情報へのアクセスを提供します。
  • エラーコールバック(オプション): 位置情報の検索に失敗した場合、このコールバックが GeolocationPositionError オブジェクトを唯一の引数として実行され、何が問題となったかに関するアクセス情報を提供します。
  • 位置データを取得するためのオプションを提供するオプションのオブジェクト。

位置情報の使用に関するさらなる情報は、位置情報 API の使用を参照してください。

インターフェイス

Geolocation

この API のメインクラスです。ユーザーの現在位置の取得、位置の変化の監視、および以前に設定した管理のクリアを行うメソッドが含まれています。

GeolocationPosition

ユーザーの位置を表します。 GeolocationPosition インスタンスは、 Geolocation に含まれるメソッドのいずれかの呼び出しが成功した場合に、成功コールバックの内部で返され、タイムスタンプと GeolocationCoordinates オブジェクトのインスタンスが含まれます。

GeolocationCoordinates

ユーザーの位置の座標を表します。 GeolocationCoordinates のインスタンスには、緯度、経度、その他の重要な関連情報が含まれています。

GeolocationPositionError

GeolocationPositionError は、 Geolocation に含まれるメソッドのいずれかの呼び出しに失敗した場合、エラーコールバック内で返され、エラーコードとメッセージが含まれています。

他のインターフェイスへの拡張

API のエントリーポイント。 Geolocation オブジェクトのインスタンスを返し、そこから他のすべての機能にアクセスすることができます。

セキュリティの考慮事項

Geolocation API を使用すると、保護されたコンテキスト内でユーザーがプログラムによって位置情報にアクセスすることができるようになります。

アクセスはさらに権限ポリシーディレクティブの geolocation によって制御されます。 geolocation のデフォルト許可リストは self であり、同一オリジンのネストされたフレーム内でのみ位置情報にアクセスするその権限を許可します。 サードパーティの利用を許可するには、 Permissions-Policy レスポンスヘッダーを設定して、特定のサードパーティオリジンへ権限を与えます。

http
Permissions-Policy: geolocation=(self b.example.com)

それから、そのオリジンからのソースの iframe 要素に allow="geolocation" 属性を追加する必要があります。

html
<iframe src="https://b.example.com" allow="geolocation"></iframe>

位置情報データは、その端末の所有者が共有したくない情報があることがあり、それを明らかにする可能性があります。 したがって、Geolocation.getCurrentPosition() または Geolocation.watchPosition() が呼び出される際には、ユーザーが明示的なその権限をプロンプト経由で許可しなければなりません(その権限の状態が既に granted または denied である場合を除く)。 許可されたその権限の有効期間はユーザーエージェントによって異なり、時間ベース、セッションベース、あるいは永続的であることがあります。 権限 APIgeolocation 権限を使用することができます。これにより、位置情報を使用する際のアクセスが granted(許可済み)、denied(拒否済み)、または prompt(プロンプト表示が必要)のいずれであるかを検査することができます。

例については位置情報 API の使用を参照してください。

仕様書

仕様書
Geolocation
# geolocation_interface

ブラウザーの互換性

可用性

Wi-Fi ベースの測位は Google が提供することが多いため、中国ではバニラの位置情報 API が利用できない場合があります。 Baidu, Autonavi, Tencent などの地域ののサードパーティプロバイダーを使用することができます。これらのサービスは、ユーザーの IP アドレスやローカルアプリを使用して、より高度な位置情報を提供します。

関連情報