Copyright © 2026 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
ジオロケーションはホスティングデバイスに関連付けられた地理的位置情報へのアクセスを 提供します。
このセクションは、本書が公開された時点での 文書のステータスについて説明しています。現在の W3C の公開文書や、この技術レポートの最新版は W3C 標準とドラフトのインデックス に掲載されています。
Geolocationは W3C 勧告として2022年9月1日に公開されました。2026年3月には、作業グループが実質的な変更をより効率的に繰り返し、新たな機能追加を継続できるよう、本仕様は勧告候補に戻りました。
公開時点では、Devices and Sensors Working Groupは依然として 2020年9月15日版のW3C特許ポリシーの下で活動しています。
本文書はDevices and Sensors Working Groupおよび Web Applications Working Groupによって、 勧告トラックを用いて 勧告候補スナップショットとして公開されました。
勧告候補としての公開は、W3Cおよびそのメンバーによる承認を意味するものではありません。 勧告候補スナップショットは幅広いレビューを受けており、 実装経験の収集を目的とし、 ワーキンググループのメンバーによる ロイヤリティフリーライセンス の約束がなされています。
この勧告候補が勧告へ進むのは、2026年4月31日より早くはならない見込みです。
本文書は W3C 特許ポリシー の下で活動しているグループによって作成されました。 W3Cは (Devices and Sensors Working Group)に関する公開特許開示リスト および (Web Applications Working Group)に関する公開特許開示リスト を管理しています。これらのページには特許開示の手順も記載されています。 個人が必須請求項を含むと信じる特許について実際に知っている場合は、 Essential Claim(s) の情報を W3C特許ポリシーの第6節 に従って開示する必要があります。
本文書は 2025年8月18日 W3Cプロセス文書 に従って管理されています。
この節は非規範的です。
Geolocation は、実装をホストするデバイスにのみ関連付けられた位置情報への高レベルなインターフェースを定義します。 位置情報の一般的なソースには、全地球測位システム(GPS)や IP アドレス、RFID、WiFi および Bluetooth の MAC アドレス、GSM/CDMA のセル ID などのネットワーク信号から推定される位置、ならびにユーザー入力が含まれます。API 自体は基盤となる位置情報ソースに依存せず、API がデバイスの実際の位置を返すことを保証するものではありません。
エンドユーザーが 許可を与える と、 Geolocation は次のことを行います:
GeolocationPosition
インターフェースを通じて提供します。
getCurrentPosition()
メソッドでサポートし、
ホスティングデバイスの位置が大きく変化したときの更新を受け取る機能を watchPosition()
メソッドで提供します。
PositionOptions の maximumAge を使用することで、
アプリケーションが指定した値以下の年齢のキャッシュされた位置(最後の位置のみがキャッシュされます)を要求できるようにします。
GeolocationPositionError
としてアプリケーションが受け取るための仕組みを提供します。
enableHighAccuracy を通じて
「高精度」位置データの要求をサポートしますが、この要求はユーザーエージェントによって無視されることがあります。
この節は非規範的です。
本仕様は、ホスティングデバイスに関連付けられた地理的な位置情報を取得するためのスクリプト API の提供に限定されます。地理的な位置情報は 世界測地系座標 [WGS84] の用語で提供されます。本仕様は何らかのマークアップ言語を提供するものではなく、地理的位置を識別する URL を構築するための新しい URL スキームを定義するものでもありません。
この節は非規範的です。
API は「ワンショット」位置要求と繰り返し位置更新の両方を可能にするよう設計されています。以下の例は一般的なユースケースを示しています。
この節は非規範的です。
ユーザーの現在位置を要求します。ユーザーが許可すれば、位置オブジェクトが返されます。
この節は非規範的です。
ユーザーの現在位置を監視する機能を要求します。ユーザーが許可すれば、位置の継続的な更新が返されます。
この節は非規範的です。
clearWatch()
メソッドを呼び出して位置変化の監視を停止します。
この節は非規範的です。
エラーが発生した場合、watchPosition() または
getCurrentPosition()
メソッドの第 2 引数に GeolocationPositionError
が渡され、何が問題だったかを把握するのに役立ちます。
この節は非規範的です。
デフォルトでは、API は以前に取得した位置が存在する限り常にキャッシュされた位置を返そうとします。この例では、位置の年齢が 10 分を超えないことを許容します。ユーザーエージェントが十分に新しいキャッシュされた位置オブジェクトを持っていない場合、自動的に新しい位置を取得します。
この節は非規範的です。
時間に敏感な方法で位置情報が必要な場合は、PositionOptions の timeout メンバーを使用して、
位置を取得するために待てる時間の上限を制限できます。
この節は非規範的です。
デフォルト許可リスト の
'self'
は同一オリジンのネストされたフレームでの API 使用を許可しますが、サードパーティのコンテンツによる API の使用を防ぎます。
サードパーティの使用は、allow="geolocation"
属性を
iframe
要素に追加することで選択的に有効化できます:
あるいは、HTTP レスポンスヘッダーを指定してファーストパーティコンテキストで API を無効にすることもできます:
Permissions Policy を参照すると、
Permissions-Policy HTTP ヘッダーの詳細が確認できます。
この節は非規範的です。
本仕様で定義された API はホスティングデバイスの地理的位置を取得するために使用されます。ほとんどの場合、この情報はデバイスのユーザーの位置も明らかにするため、ユーザーのプライバシーを損なう可能性があります。
この節は非規範的です。
Geolocation は 強力な機能 であり、位置データがウェブアプリケーションと共有される前に
エンドユーザーからの 明示的な許可 を必要とします。この要件は、
権限確認 の手順によって規範的に強制され、getCurrentPosition()
および
watchPosition()
メソッドはこれに依存します。
エンドユーザーは通常、ユーザーインターフェースを通じて 明示的な許可 を与えます。UI は通常、エンドユーザーが選択できるさまざまな許可の ライフタイム を提示します。許可の ライフタイム の選択肢はユーザーエージェントによって異なりますが、典型的には時間ベース(例:「1 日」)やブラウザを閉じるまで、あるいはユーザーが許可を無期限に付与することを選べる場合もあります。許可の ライフタイム は、ユーザーエージェントがその許可を自動的にデフォルトの 許可状態 に戻すまでの期間を決定し、後続の利用時にエンドユーザーに新しい選択を促します。
許可の ライフタイム の粒度はユーザーエージェントによって異なりますが、 本仕様ではユーザーエージェントに対してデフォルトでライフタイムを単一のブラウジングセッションに制限することを推奨します(規範的要件については 3.4 API 使用権限の確認 を参照してください)。
この節は非規範的です。
この節は「受信者」に適用され、一般には Geolocation を利用する開発者を意味します。ユーザーエージェントや本仕様がこれらの要件を強制することは不可能ですが、開発者はこの節を注意深く読み、以下の提案にできるだけ従う必要があります。開発者は、ユーザーの位置データの使用およびアクセスを規制するプライバシー法が自らの管轄に存在する可能性があることを認識しておく必要があります。
受信者は、必要な場合にのみ位置情報を要求し、位置情報は提供されたタスクのためだけに使用すべきです。タスクが完了したら位置情報は破棄すべきであり、ユーザーに明示的に保持を許可されない限り保存してはなりません。受信者はこの情報を不正アクセスから守るための措置を講じる必要があります。位置情報が保存される場合、ユーザーがその情報を更新および削除できるようにする必要があります。
位置情報の受信者は、ユーザーの明示的な許可なしに位置情報を再送信することを控えるべきです。再送信する場合は注意が必要であり、暗号化の使用が推奨されます。
受信者は、位置データを収集していること、その収集目的、データの保持期間、データの保護方法、共有される場合の共有方法、ユーザーがデータにアクセス・更新・削除する方法、ならびにデータに関してユーザーが持つその他の選択肢を明確かつ分かりやすく開示すべきです。この開示には上記ガイドラインの例外の説明も含める必要があります。
この節は非規範的です。
実装者は、ユーザーのプライバシーに悪影響を及ぼす可能性のある次の点を考慮することが勧められます: 特定の場合において、ユーザーは意図せずユーザーエージェントに対してウェブサイトに自分の位置を開示する許可を与えてしまうことがあります。他の場合では、ある URL にホストされたコンテンツが変更され、以前に付与された位置許可がユーザーの観点ではもはや適用されなくなることがあります。またはユーザーが単に心変わりすることもあります。
これらの状況を予測したり防止したりすることは本質的に困難です。緩和策および高度な防御的措置は実装者の責任であり、本仕様で規定されるものではありません。ただし、これらの措置を設計する際には、実装者は位置共有に関するユーザーの認識を高め、許可の取り消しを可能にするユーザーインターフェースへのアクセスを提供することを勧められます。
Geolocation は デフォルトの強力な機能 として識別され、
名前 として
"geolocation"
が使用されます。
API を使用するための 権限確認 の際に、ユーザーエージェントは MAY 時間ベースの 許可 ライフタイム(例: "24 hours", "1 week")を提案したり、 選択して 許可を記憶する 付与 を無期限にすることを選ぶことができます。しかし、 それにもかかわらず、ユーザーエージェントは RECOMMENDED として優先的に 許可 の ライフタイム を単一のセッションに制限することを 優先するべきです: これは例えば、realm が破棄されるまで、エンドユーザーが ナビゲート して オリジン を離れるまで、または 対応するブラウザタブが閉じられるまで、のように扱うことができます。
公開時点では、Geolocation に関連するセキュリティ上の考慮事項はありません。ただし、読者は 3. プライバシーに関する考慮事項 を読むことを推奨します。
WebIDL[Exposed=Window]
interface Geolocation {
undefined getCurrentPosition (
PositionCallback successCallback,
optional PositionErrorCallback? errorCallback = null,
optional PositionOptions options = {}
);
long watchPosition (
PositionCallback successCallback,
optional PositionErrorCallback? errorCallback = null,
optional PositionOptions options = {}
);
undefined clearWatch (long watchId);
};
callback PositionCallback = undefined (
GeolocationPosition position
);
callback PositionErrorCallback = undefined (
GeolocationPositionError positionError
);
Geolocation のインスタンスは以下の表に示す内部スロットで作成されます:
| Internal slot | Description |
|---|---|
| [[cachedPosition]] |
A GeolocationPosition,
initialized to null. It's a reference
to the last acquired position and serves as a cache. A user agent
MAY evict [[cachedPosition]] by resetting
it to
null at any time for any reason.
|
| [[watchIDs]] |
Initialized as an empty list
of unsigned long
items.
|
The getCurrentPosition(successCallback,
errorCallback, options)
メソッドの手順は次のとおりです:
Document is not fully active:
POSITION_UNAVAILABLE.
The watchPosition(successCallback,
errorCallback, options)
メソッドの手順は次のとおりです:
Document is not fully active:
POSITION_UNAVAILABLE.
unsigned long that is greater than
zero.
[[watchIDs]].
When clearWatch() is invoked, the user agent MUST:
[[watchIDs]].
位置を 要求する
には、Geolocation
geolocation、PositionCallback
の successCallback、PositionErrorCallback?
の errorCallback、PositionOptions
の options、および省略可能な watchId
を渡します:
[[watchIDs]].
Document.
PERMISSION_DENIED
を渡します。
PERMISSION_DENIED
を渡します。
PermissionDescriptor whose
name is "geolocation".
PERMISSION_DENIED
を渡します。
位置を 取得する には、PositionCallback の successCallback、PositionErrorCallback?
の errorCallback、
PositionOptions の options、および省略可能な
watchId を渡します。
[[watchIDs]] does not contain watchId,
terminate this algorithm.
EpochTimeStamp
that represents now.
timeout.
[[cachedPosition]].
"geolocation".
GeolocationPositionError:
code
を渡します。
GeolocationPosition
を作成し、emulatedPositionData、acquisitionTime、および
options.enableHighAccuracy
を渡します。
report" で呼び出す
ステップを登録します。
maximumAge is
greater than 0:
maximumAge
member.
timestamp's
value is greater than
cacheTime, and
cachedPosition.[[isHighAccuracy]]
equals options.enableHighAccuracy:
report" で呼び出す ステップを登録します。
enableHighAccuracy
during
acquisition.
double
that represents the
accuracy value indicating the 95% confidence level
in meters. Accuracy measures how close the measured
coordinates are to the true position.
double?
that represents the altitude in
meters above the [WGS84]
ellipsoid, or null if
not available. Altitude measures the height above
sea level.
double?
that represents the
altitude accuracy, or null if not available,
indicating the 95% confidence level in meters.
Altitude accuracy measures how close the measured
altitude is to the true altitude.
double?
that represents the heading in
degrees, or null if not available or the device
is stationary. Heading measures the direction in
which the device is moving relative to true north.
double
that represents the latitude
coordinates on the Earth's surface in degrees,
using the [WGS84]
coordinate system. Latitude
measures how far north or south a point is from the
Equator.
double
that represents the longitude
coordinates on the Earth's surface in degrees,
using the [WGS84]
coordinate system. Longitude
measures how far east or west a point is from the
Prime Meridian.
double?
that represents the
speed in meters per second, or null if not
available. Speed measures how fast the device is
moving.
GeolocationPosition
を作成し、positionData、acquisitionTime、および
options.enableHighAccuracy
を渡します。
[[cachedPosition]] to
position.
report" で呼び出す ステップを登録します。
エラーでコールバックを呼び出す として errorCallback に
PERMISSION_DENIED
を渡します。
TIMEOUT
を渡します。
POSITION_UNAVAILABLE
を渡します。
エラーでコールバックを呼び出す 指示があったとき、与えられた
PositionErrorCallback?
の callback と
unsigned short の code が与えられた場合:
GeolocationPositionError instance
whose
code attribute is initialized
to code.
report" で呼び出す
ステップを登録します。
WebIDLdictionary PositionOptions {
boolean enableHighAccuracy = false;
[Clamp] unsigned long timeout = 0xFFFFFFFF;
[Clamp] unsigned long maximumAge = 0;
};
The enableHighAccuracy メンバーは、アプリケーションが
できる限り正確な位置情報を受け取りたいことを示すヒントを提供します。
このメンバーの目的は、アプリケーションが高精度のジオロケーション修正を必須としないことを実装に伝え、したがって実装側が
大きな電力を消費するジオロケーションプロバイダ(例えば GPS)の使用を回避することを MAY できるようにすることです。
The timeout メンバーは、位置の取得が失効するまでの最大時間を
ミリ秒単位で示します。
ドキュメントが可視状態になるのを待つ時間や、API
使用権限の取得に要する時間は、
timeout によってカバーされる期間には含まれません。
timeout メンバーは、位置の取得 が開始されたときにのみ適用されます。
The maximumAge メンバーは、ウェブアプリケーションが許容する
キャッシュされた位置の最大年齢をミリ秒単位で示します。
WebIDL[Exposed=Window, SecureContext]
interface GeolocationPosition {
readonly attribute GeolocationCoordinates coords;
readonly attribute EpochTimeStamp timestamp;
[Default] object toJSON();
};
The coords 属性は地理座標を含みます。
The timestamp 属性は、デバイスの地理位置が取得された時刻を表します。
The toJSON() メソッドは、GeolocationPosition オブジェクトの JSON 表現を返します。
GeolocationPosition
のインスタンスは、以下の表に示された内部スロットを持って作成されます:
| Internal slot | 説明 |
|---|---|
| [[isHighAccuracy]] |
A boolean that records the
value of the
enableHighAccuracy
メンバーの値を、この GeolocationPosition が 作成 されたときに記録します。
|
本仕様で定義される次の task source があります。
PositionCallback および PositionErrorCallback
をキューに入れるために本仕様で使用されます。
WebIDL[Exposed=Window, SecureContext]
interface GeolocationCoordinates {
readonly attribute double accuracy;
readonly attribute double latitude;
readonly attribute double longitude;
readonly attribute double? altitude;
readonly attribute double? altitudeAccuracy;
readonly attribute double? heading;
readonly attribute double? speed;
[Default] object toJSON();
};
The latitude および longitude 属性は、
位置を度単位の実数で表し、[WGS84] 座標系を用います。
The accuracy 属性は、位置の精度半径をメートル単位で表します。
The altitude 属性は、位置の高さを [WGS84] 楕円体上のメートルで示します。
The altitudeAccuracy 属性は、高度の精度をメートル単位で表します(例えば 10
メートル)。
The heading 属性は、ホスティングデバイスの進行方向を角度(度)で表し、0° ≤ heading <
360° の範囲で真北に対して時計回りに測ります。
The speed 属性は、ホスティングデバイスの現在の速度の水平方向成分の大きさをメートル毎秒で示します。
The toJSON() メソッドは、GeolocationCoordinates オブジェクトの JSON
表現を返します。
新しい
GeolocationPosition は、map
の positionData、EpochTimeStamp の timestamp、および boolean の isHighAccuracy を用いて次の手順で構築されます:
GeolocationCoordinates インスタンスにします。
GeolocationPosition インスタンスで、その
coords 属性は coords に初期化され、
timestamp 属性は
timestamp に初期化され、内部スロット [[isHighAccuracy]] は
isHighAccuracy に設定されます。
WebIDL[Exposed=Window]
interface GeolocationPositionError {
const unsigned short PERMISSION_DENIED = 1;
const unsigned short TIMEOUT = 3;
readonly attribute unsigned short code;
readonly attribute DOMString message;
};
PERMISSION_DENIED(数値 1)
POSITION_UNAVAILABLE(数値 2)
TIMEOUT(数値 3)
timeout
メンバーで指定された時間が経過しても、ユーザーエージェントが正常に
位置を取得 できなかった場合。
code 属性は、エラーでコールバックを呼び出すときに初期化された値 を返します(可能な値は 10.1
定数 を参照)。
message 属性は、code 属性の開発者向けの
テキストによる説明です。
本仕様は、トークン文字列 "geolocation" によって識別される ポリシー制御機能 を定義します。その デフォルト許可リスト は 'self' です。
ユーザーエージェントの自動化やアプリケーションのテストの目的のために、本書はジオロケーションのエミュレーションを定義します。
各 トップレベルの traversable には、関連付けられた エミュレートされた位置データ があり、これは初期値が null の GeolocationCoordinates、GeolocationPositionError、または null を表すデータです。
エミュレート位置データを設定する には、与えられた navigable navigable と emulatedPositionData を使用します:
GeolocationCoordinates、または GeolocationPositionError
のいずれかであることを保証します。
エミュレート位置データを取得する には、与えられた Geolocation
geolocation を使用します:
Document の node navigable。
非規範と明示された節のほかに、本仕様のすべての作成ガイドライン、図、例、および注は非規範的です。それ以外のすべては本仕様において規範的です。
本書で使用されるキーワード MAY、MUST、および RECOMMENDED は、すべて大文字で表示されている場合に限り、BCP 14 [RFC2119] [RFC8174] に記載されているとおりに解釈されます。
WebIDLpartial interface Navigator {
[SameObject] readonly attribute Geolocation geolocation;
};
[Exposed=Window]
interface Geolocation {
undefined getCurrentPosition (
PositionCallback successCallback,
optional PositionErrorCallback? errorCallback = null,
optional PositionOptions options = {}
);
long watchPosition (
PositionCallback successCallback,
optional PositionErrorCallback? errorCallback = null,
optional PositionOptions options = {}
);
undefined clearWatch (long watchId);
};
callback PositionCallback = undefined (
GeolocationPosition position
);
callback PositionErrorCallback = undefined (
GeolocationPositionError positionError
);
dictionary PositionOptions {
boolean enableHighAccuracy = false;
[Clamp] unsigned long timeout = 0xFFFFFFFF;
[Clamp] unsigned long maximumAge = 0;
};
[Exposed=Window, SecureContext]
interface GeolocationPosition {
readonly attribute GeolocationCoordinates coords;
readonly attribute EpochTimeStamp timestamp;
[Default] object toJSON();
};
[Exposed=Window, SecureContext]
interface GeolocationCoordinates {
readonly attribute double accuracy;
readonly attribute double latitude;
readonly attribute double longitude;
readonly attribute double? altitude;
readonly attribute double? altitudeAccuracy;
readonly attribute double? heading;
readonly attribute double? speed;
[Default] object toJSON();
};
[Exposed=Window]
interface GeolocationPositionError {
const unsigned short PERMISSION_DENIED = 1;
const unsigned short POSITION_UNAVAILABLE = 2;
const unsigned short TIMEOUT = 3;
readonly attribute unsigned short code;
readonly attribute DOMString message;
};
accuracy
GeolocationCoordinates の属性
§9.1
altitude
GeolocationCoordinates の属性
§9.2
altitudeAccuracy は
GeolocationCoordinates の属性
§9.2
[[cachedPosition]] は
Geolocation の内部スロット
§6.1
clearWatch() は
Geolocation のメソッド
§6.4
code は
GeolocationPositionError の属性
§10.2
coords は
GeolocationPosition の属性
§8.1
enableHighAccuracy は
PositionOptions のメンバー
§7.1
geolocation は
Navigator の属性
§5.1
Geolocation インターフェース
§6.
"geolocation"
§3.4
GeolocationCoordinates
インターフェース
§9.
GeolocationPosition インターフェース
§8.
GeolocationPositionError
インターフェース
§10.
getCurrentPosition
は Geolocation のメソッド
§6.2
heading は
GeolocationCoordinates の属性
§9.3
[[isHighAccuracy]] は
GeolocationPosition の内部スロット
§8.4
latitude は
GeolocationCoordinates の属性
§9.1
longitude は
GeolocationCoordinates の属性
§9.1
maximumAge は
PositionOptions のメンバー
§7.3
message は
GeolocationPositionError の属性
§10.3
PERMISSION_DENIED
§10.1
POSITION_UNAVAILABLE
§10.1
PositionCallback
§6.
PositionErrorCallback
§6.
PositionOptions 辞書
§7.
speed は
GeolocationCoordinates の属性
§9.4
timeout は
PositionOptions のメンバー
§7.2
TIMEOUT
§10.1
timestamp は
GeolocationPosition の属性
§8.2
[[watchIDs]] は
Geolocation の内部スロット
§6.1
watchPosition は
Geolocation のメソッド
§6.3
EpochTimeStamp
allow 属性(iframe 要素用)
iframe
要素
list 用)
list 用)
map 用)
list
用)
list 用)
name(PermissionDescriptor 用)
PermissionDescriptor
boolean
型
[Clamp] 拡張属性
[Default] 拡張属性
DOMString インターフェース
double
型
[Exposed] 拡張属性
long
型
object
型
[SameObject] 拡張属性
[SecureContext] 拡張属性
undefined 型
unsigned long 型
unsigned short 型
この節は非規範的です。
本仕様は、Aza Raskin による研究、Google Gears Geolocation API、および LocationAware.org を含む 業界における以前の作業に基づいています。
また、Alec Berntson、Alissa Cooper、Steve Block、Greg Bolsinga、Lars Erik Bolstad、Aaron Boodman、Dave Burke、Chris Butler、 Max Froumentin、Shyam Habarakada、Marcin Hanclik、Ian Hickson、Brad Lassey、Angel Machin、Cameron McCormack、Daniel Park、Stuart Parmenter、 Olli Pettay、Chris Prince、Arun Ranganathan、Carl Reed、Thomas Roessler、Dirk Segers、Allan Thomson、Martin Thomson、Doug Turner、Erik Wilde、Matt Womer、および Mohamed Zergaoui に感謝します。
この節は非規範的です。
Since publication as a W3C Recommendation in 2022, Geolocation has received the following normative changes:
Since First Public Working Draft in 2021, until it was published as a W3C Recommendation in 2022, Geolocation received the following normative changes:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Since publication of the Second Edition in 2016, this specification received the following substantive changes:
errorCallback is now nullable.
callbacks are no longer treated as "EventHandler" objects
(i.e., objects that have a .handleEvent() method), but are now
exclusively treated as IDL callback functions.
[NoInterfaceObject], so Geolocation and other interface of this
spec are now in the global scope. Also, the interfaces were renamed
from NavigatorGeolocation* to just Geolocation*.
See the commit history for a complete list of changes.