CyberLibrarian

【注意】 このドキュメントは、W3CのGeolocation API W3C Recommendation 01 September 2022の和訳です。
このドキュメントの正式版はW3Cのサイト上にある英語版であり、このドキュメントには翻訳に起因する誤りがありえます。誤訳、誤植などのご指摘は、訳者までお願い致します。

First Update: 2023年3月19日


ジオロケーションAPI

W3C勧告

このドキュメントの詳細
本バージョン:
https://www.w3.org/TR/2022/REC-geolocation-20220901/
最新公開バージョン:
https://www.w3.org/TR/geolocation/
最新編集者草案:
https://w3c.github.io/geolocation-api/
履歴:
https://www.w3.org/standards/history/geolocation
コミット履歴
テスト・スイート:
https://wpt.live/geolocation-API/
実装報告書:
https://w3c.github.io/geolocation-api/reports/PR_imp_report.html
編集者:
Marcos Caceres (W3C)
Reilly Grant (Google)
旧編集者:
Andrei Popescu (Google Inc.)
フィードバック:
GitHub w3c/geolocation-api (プルリクエスト新しい課題未解決の課題)
正誤表:
正誤表があります.
ブラウザ対応:
caniuse.com

翻訳版も参照してください。


要約

ジオロケーションAPIは、ホスティング・デバイスに関連付けられた地理的な位置情報へのアクセスを提供します。

このドキュメントのステータス

この項は、このドキュメントの公開時のステータスについて記述しています。現行のW3Cの刊行物およびこの技術報告の最新の改訂版のリストは、https://www.w3.org/TR/のW3C技術報告インデックスにあります。

デバイス・センサー・ワーキンググループ(Devices and Sensors Working Group)は、この仕様を「生活水準」にすることを目指し、更新を続けています。そのため、「版」を廃止し、新機能の追加やバグの修正に合わせて、この仕様の更新したW3C勧告を発行し続けることを目指しています。

このドキュメントは、デバイスおよびセンサー・ワーキンググループ(Devices and Sensors Working Group)が勧告トラックを用いて勧告として公開しました。

W3Cは、この仕様をウェブの標準として広く展開することを推奨します。

W3C勧告は、広範な合意形成の後、W3Cとそのメンバーの協賛を得て、ワーキンググループのメンバーから実装のためのロイヤルティ・フリーのライセンスを約束された仕様です。この勧告の将来の更新では、新しい機能を組み込む可能性があります。

このドキュメントは、W3C特許方針の下で活動しているグループによって作成されました。W3Cは、このグループの成果物に関連するあらゆる特許の開示の公開リストを維持し、このページには特許の開示に関する指示も含まれています。不可欠な請求権(Essential Claim(s))を含んでいると思われる特許に関して実際に知っている人は、W3C特許方針の6項に従って情報を開示しなければなりません。

このドキュメントは、2021年11月2日のW3Cプロセス・ドキュメントによって管理されています。

1. はじめに

この項は非規範的です。

ジオロケーションAPIは、実装を提供しているデバイスのみに関連付けられている位置情報に対する、ハイレベルなインターフェースを定義します。一般的な位置情報の情報源には、ユーザによる入力に加え、GPS(Global Positioning System)や、IPアドレス、RFID、WiFiやBluetooth MACアドレスなどのネットワーク信号から推測される位置情報、GSM/CDMAセルIDなどがあります。API自体は、基礎となる位置情報の情報源に依存せず、APIがデバイスの実際の位置を返す保証はありません。

エンドユーザが許可を与えた場合、ジオロケーションAPIは、

1.1 対象範囲

この項は非規範的です。

この仕様は、ホスティング・デバイスに関連付けられている地理的な位置情報を取得するためのスクリプトAPIの提供のみを範囲としています。地理的な位置情報は、世界測地系座標[WGS84]で提供されます。この仕様には、いかなる種類のマークアップ言語の提供も含まれておらず、地理的な位置を識別するURLを構築するための新たなURLスキームの定義も含まれていません。

1.2 変更履歴

この項は非規範的です。

2021年の最初の公開草案以後、ジオロケーションAPIに次の規範的な変更を行いました。

2016年の第2版の公開以降、この仕様に次の変更を行いました。

変更点の完全なリストは、コミット履歴をご覧ください。

2.

この項は非規範的です。

このAPIは、「単発」の位置リクエストと、繰り返しの位置更新の両方を可能にすることを目指しています。次の例は、一般的なユースケースを示しています。

2.1 現在位置情報の取得

この項は非規範的です。

ユーザの現在位置をリクエストします。ユーザが許可すれば、位置オブジェクトが返されます。

2.2 位置の監視

この項は非規範的です。

ユーザの現在位置を監視する機能をリクエストします。ユーザが許可すれば、ユーザの位置の継続的な更新が返されます。

2.3 位置の監視の停止

この項は非規範的です。

clearWatch()メソッドを呼び出すことにより、位置の変化の監視を停止します。

2.4 エラー処理

この項は非規範的です。

エラーが発生した場合、watchPosition()またはgetCurrentPosition()のメソッドの2番目の引数にGeolocationPositionErrorというエラーが呼び出され、問題の内容が分かるようになります。

2.5 キャッシュ制御としてのmaximumAgeの使用

この項は非規範的です。

デフォルトでは、以前に取得した位置がある限り、APIは常にキャッシュされた位置を返そうとします。この例では、経過時間が10分以下である位置を受け入れます。ユーザ・エージェントが持っているキャッシュされた位置が十分に新しくない場合は、自動的に新しい位置を取得します。

2.6 timeoutの使用

時間的制約のある形で位置情報を求める場合、PositionOptions timeoutメンバーを用いて、位置の取得までの待機時間を制限することができます。

2.7 サードパーティーのコンテキストにおけるAPIの有効化

この項は非規範的です。

'self'というデフォルトの許可リストでは、同一オリジンの入れ子のフレーム内でジオロケーションAPIを使用できますが、サードパーティーのコンテンツがそのAPIを用いることはできません。

サードパーティーの使用は、iframe要素にallow="geolocation"属性を追加することで選択的に有効にすることができます。

または、HTTPレスポンス・ヘッダーを指定することで、ファーストパーティのコンテキストでAPIを無効化することもできます。

Permissions-Policy HTTPヘッダーの詳細については、許可ポリシーを参照してください。

3. プライバシーに関する留意点

この項は非規範的です。

この仕様で定義しているAPIは、ホスティング・デバイスの地理的な位置を取得するために用いられます。ほとんどの場合、この情報はそのデバイスのユーザの位置も開示するため、ユーザのプライバシーが危険にさらされる可能性があります。

3.2 位置情報の受信者のプライバシーに関する留意点

この項は非規範的です。

: この機密データを扱う開発者の責任

この項は、一般的にジオロケーションAPIを利用する開発者を意味する「受信者」に適用されます。ユーザ・エージェントやこの仕様がこれらの要件を強制することは不可能ですが、開発者はこの項を注意深く読み、以下の提案に従うよう最善を尽くす必要があります。開発者は、ユーザの位置データの利用やアクセスを管理できるプライバシー保護法が、自身の管轄内に存在する可能性があることを認識する必要があります。

受信者は、���要な場合にのみ位置情報をリクエストし、与えられたタスクのためにのみ位置情報を用いるべきです。受信者は、ユーザから位置情報の保持を明確に許可されている場合を除き、そのタスクの完了時にその情報を廃棄すべきです。受信者は、この情報を不正なアクセスから保護するための措置を講じる必要もあります。位置情報を保存する場合は、ユーザがこの情報を更新・削除できるようにする必要があります。

位置情報の受信者は、ユーザの明確な許可なく位置情報を再送信しないようにする必要があります。再送信時には注意が必要であり、暗号化の利用が推奨されます。

受信者は、位置データを収集しているという事実、収集目的、データの保持期間、データの保護方法、データを共有する場合の共有方法、ユーザがデータにアクセス、更新、削除できる方法、データに関してユーザが有するその他の選択肢を明確かつ目立つように開示すべきです。この開示には、上記のガイドラインの例外に関する説明が含まれている必要があります。

3.3 実装に関する留意点

この項は非規範的です。

実装者は、ユーザのプライバシーに悪影響を及ぼしうる次の点について考慮することが推奨されます。ユーザは、自分の位置をウェブサイトに開示する許可をユーザ・エージェントにうっかり与えてしまう場合があります。また、ユーザに関する限り、あるURLで提供されていたコンテンツが変更され、以前に与えられた位置に関する許可が適用されなくなる場合もあります。あるいは、単にユーザが考えを変えるかもしれません。

これらの状況を予測したり防止したりすることは本質的に困難です。緩和策や徹底的な防御策は実装の責任であり、この仕様では規定していません。しかし、実装者は、これらの対策を設計する際に、ユーザが位置情報の共有について意識できるようにし、許可の取り消しが可能なユーザ・インターフェースにアクセスできるようにすることをお勧めします。

3.4 APIの使用許可の確認

ジオロケーションAPIは、"geolocation"という名前で識別されるデフォルトの強力な機能です。

APIの使用許可の確認を行う際に、ユーザ・エージェン���は、「24時間」、「1週間」などの時間ベースの許可有効期間を提案することや、その許可の付与を無期限に記憶することを選択できます(MAY)。しかし、ユーザ・エージェントは、許可有効期間を1回のセッションに制限することを優先するようお勧めします(RECOMMENDED)。これは、例えば、領域が破棄されるまで、エンドユーザがオリジンから離れて移動するまで、または関連するブラウザのタブが閉じられるまででありえます。

4. セキュリティに関する留意点

ジオロケーションAPIに関連するセキュリティに関する留意点は、公開時点では存在しません。しかし、3. プライバシーに関する留意点を読まれることをお勧めします。

6. Geolocationインターフェースとコールバック

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
);

6.1 内部スロット

Geolocationのインスタンスは、下記表の内部スロットを用いて作成されます。

内部スロット 説明
[[cachedPosition]] GeolocationPosition。ヌル(null)で初期化されます。これは、最後に取得した位置への参照であり、キャッシュとして機能します。ユーザ・エージェントは、ヌル(null)にリセットすることにより、いつでも理由を問わず、[[cachedPosition]]を削除できます(MAY)。
[[watchIDs]] unsigned long項目の空のリストとして初期化されます。

6.2 getCurrentPosition()メソッド

getCurrentPosition(successCallbackerrorCallbackoptions)メソッドのステップは次の通りです。

  1. 現在の設定オブジェクト関連するグローバル・オブジェクト関連付けられたDocument完全にアクティブでなければ、
    1. errorCallbackPOSITION_UNAVAILABLEエラーでコールバックします。
    2. このアルゴリズムを終了します。
  2. 並行してsuccessCallbackerrorCallbackoptionsを渡して位置のリクエストを行います。

6.3 watchPosition()メソッド

watchPosition(successCallbackerrorCallbackoptions)メソッドのステップは次の通りです。

  1. 現在の設定オブジェクト関連するグローバル・オブジェクトの関連付けられたDocument完全にアクティブでなければ、
    1. errorCallbackPOSITION_UNAVAILABLEを渡してエラーでコールバックします。
    2. 0を返します。
  2. watchIdを0より大きい実装に依存したunsigned longとします。
  3. watchIdこれ[[watchIDs]]追加します。
  4. 並行してsuccessCallbackerrorCallbackoptionswatchIdを渡して位置のリクエストを行います。
  5. watchIdを返します。

6.4 clearWatch()メソッド

clearWatch()が呼び出された場合、ユーザ・エージェントは、次のことを行わなければなりません(MUST)。

  1. watchIdこれ[[watchIDs]]から削除します。

6.5 位置のリクエスト

位置のリクエストを行うには、PositionCallback successCallbackPositionErrorCallback? errorCallbackPositionOptions options、オプションのwatchIdを渡します。

  1. watchIDsこれ[[watchIDs]]とします。
  2. documentを、現在の設定オブジェクト関連するグローバル・オブジェクト関連付けられたDocumentとします。
  3. documentが「geolocation」機能の使用を許可されていなければ、
    1. watchIdが渡された場合、watchIdwatchIDsから削除します。
    2. errorCallbackPERMISSION_DENIEDを渡してエラーでコールバックします。
    3. このアルゴリズムを終了します。
  4. document可視性の状態が「hidden」(不可視)であれば、下記のページの可視性変更ステップの実行を待ちます。
    1. 言明: document可視性状態は「visible」(可視)である。
    2. 下記の次のステップに進みます。
  5. descriptorを、name"geolocation"である新しいPermissionDescriptorとします。
  6. permissionを設定してdescriptor使用許可をリクエストします。
  7. permissionが「denied」(拒否)であれば、
    1. watchIdが渡された場合、watchIdwatchIDsから削除します。
    2. errorCallbackPERMISSION_DENIEDを渡してエラーでコールバックします。
    3. このアルゴリズムを終了します。
  8. successCallbackerrorCallbackoptionswatchIdを渡して位置の取得を待ちます。
  9. watchIdが渡されなければ、このアルゴリズムを終了します。
  10. watchIDswatchId含まれている間に、
    1. 地理的な位置の大きな変化を待ちます。何をもって地理的な位置の大きな変化とするかは、実装に委ねられます。ユーザ・エージ���ントは、位置の変化が報告される頻度に制限を課すことができます(MAY)。
    2. document完全にアクティブでない、または可視性の状態が「visible」(可視)でない場合は、 前のステップに戻り、再び地理的な位置の大きな変化を待ちます
      : 位置の更新は、完全にアクティブな可視ドキュメントに対してのみ行われる。
    3. successCallbackerrorCallbackoptionswatchIdを渡して位置の取得を待ちます。

6.6 位置の取得

位置の取得を行うには、PositionCallback successCallbackPositionErrorCallback? errorCallbackPositionOptions options、オプションのwatchIdを渡します。

  1. watchIdが渡され、これ[[watchIDs]]watchId含まれていなければ、このアルゴリズムを終了します。
  2. acquisitionTimeを、現在を表す新しいEpochTimeStampとします。
  3. timeoutTimeacquisitionTimeoptions.timeoutの和とします。
  4. cachedPositionこれ[[cachedPosition]]とします。
  5. timeoutTimeで時間が経過する実装固有のtimeoutタスクを作成し、その間に次のステップを実行してデバイスの位置の取得を試みます。
    1. permission"geolocation"現在の許可状態を取得するとします。
    2. permissionが「denied」(拒否)であれば、
      1. timeoutを停止します。
      2. ユーザまたはシステムによる許可の拒否に失敗したケースのステップを行います。
    3. permissionが「granted」(許可)であれば、
      1. positionをヌル(null)とします。
      2. cachedPositionがヌル(null)でなく、options.maximumAgeが0よりも大きければ、
        1. cacheTimeacquisitionTimeからoptions.maximumAgeメンバーの値を引いた値とします。
        2. cachedPositiontimestampの値がcacheTimeより大きく、かつccachedPosition.[[isHighAccuracy]]options.enableHighAccuracyと等しければ、positioncachedPositionに設定します。
      3. そうでない場合、positioncachedPositionでなければ、オプションとして取得中にoptions.enableHighAccuracyの値を考慮して、基盤となるシステムからの位置データの取得を試みます。
      4. 取得中にtimeoutの時間が経過した場合、またはデバイスの位置の取得に失敗した場合は、
        1. timeoutを停止します。
        2. 失敗の処理に進みます。
        3. このアルゴリズムを終了します。
      5. システムからの位置データ取得に成功した場合は、
        1. acquisitionTimeoptions.enableHighAccuracyを渡して、position新しいGeolocationPositionに設定します。
        2. これ[[cachedPosition]]positionに設定します。
      6. timeoutを停止します。
      7. successCallbackposition呼び出すステップを用いて、ジオロケーション・タスク源タスクをキューに入れます
    失敗の処理:
    • 位置の取得に失敗した場合、失敗と一致する条件に基づき、次のいずれかを行います。
      ユーザまたはシステムによる許可の拒否:

      errorCallbackPERMISSION_DENIEDを渡してエラーでコールバックします。

      : ブラウザの許可とOSの許可
      タイムアウトの発生:
      errorCallbackTIMEOUTを用いてエラーでコールバックします。
      データ取得エラーまたはその他の理由:
      errorCallbackPOSITION_UNAVAILABLEを渡してエラーでコールバックします。

6.7 エラーでコールバック

エラーでコールバックするように指示された場合、PositionErrorCallback? callbackunsigned short codeを仮定すると、

  1. callbackがヌル(null)の場合、戻ります。
  2. errorを、code属性がcodeに初期化された、新しく作成されたGeolocationPositionErrorインスタンスとします。
  3. callbackerror呼び出すステップを用いて、ジオロケーション・タスク源タスクをキューに入れます

7. PositionOptions辞書

WebIDLdictionary PositionOptions {
  boolean enableHighAccuracy = false;
  [Clamp] unsigned long timeout = 0xFFFFFFFF;
  [Clamp] unsigned long maximumAge = 0;
};

7.1 enableHighAccuracyメンバー

enableHighAccuracyメンバーは、アプリケーションが最も正確な位置データの受信を望んでいることを示すヒントを提供します。このメンバーの目的は、アプリケーションが高精度なジオロケーションのfix解を求めないことを実装に通知できるようにすることです。したがって、実装では、大量の電力を消費するジオロケーション・プロバイダー(例えば、GPS)を避けることができます(MAY)。

: enableHighAccuracyに関する注意事項

7.2 timeoutメンバー

timeoutメンバーは、位置の取得が期限切れになるまでの最長時間をミリ秒単位で示します。

: いつタイムアウトが計算されるのか

ドキュメントが可視となるまでやAPIの使用許可を取得するまでの待機時間は、timeoutメンバーの対象期間には含まれません。timeoutメンバーは、位置の取得の開始時にのみ適用されます。

: 即時中止

7.3 maximumAgeメンバー

maximumAgeメンバーは、ウェブ・アプリケーションが、経過時間がミリ秒単位で指定時間以下である、キャッシュされた位置を受け入れることを示します。

8. GeolocationPositionインターフェース

WebIDL[Exposed=Window, SecureContext]
interface GeolocationPosition {
  readonly attribute GeolocationCoordinates coords;
  readonly attribute EpochTimeStamp timestamp;
};

8.1 coords属性

coords属性には、地理的な座標が含まれます。

8.2 timestamp属性

timestamp属性は、デバイスの地理的な位置を取得した時刻を表します。

8.3 内部スロット

GeolocationPositionErrorのインスタンスは、次の表の内部スロットを用いて生成されます。

内部スロット 説明
[[isHighAccuracy]] このGeolocationPosition作成されたときのenableHighAccuracyメンバーの値を記録するboolean

8.4 タスク源

この仕様では、次のタスク源を定義しています。

ジオロケーション・タスク源
この仕様では、位置のリクエストを行う際に、ノンブロッキングのPositionCallbackPositionErrorCallbackをキューに入れるために用います。

9. GeolocationCoordinatesインターフェース

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;
};

9.1 latitudelongitudeaccuracy属性

latitudelongitudeの属性は、10進数の度数で指定される地理的な座標です。

accuracy属性は、緯度と経度の座標の精度レベルをメートルで表します(例えば、65メートル)。

9.2 altitudealtitudeAccuracy属性

altitude属性は、位置の高さを示し、[WGS84]楕円体からの高さをメートルで指定します。

altitudeAccuracy属性は、高度の精度をメートルで表します(例えば、10メートル)。

9.3 heading属性

heading属性は、ホスティング・デバイスの移動方向を表し、真北に対して時計回りに、0° ≤ 方向 < 360°の範囲で、度数で指定します。

9.4 speed属性

speed属性は、ホスティング・デバイスの現在の速度の水平成分の大きさをメートル毎秒で表します。

9.5 GeolocationPositionの構築

新しいGeolocationPositionは、EpochTimeStamp timestampとブールのisHighAccuracyを用いて、次のステップを実行することで構築されます。

  1. coordsを新しく作成されたGeolocationCoordinatesのインスタンスとします。
    1. coordlatitude属性を10進数の度数で地理座標に初期化します。
    2. coordlongitude属性を10進数の度数で地理座標に初期化します。
    3. coordaccuracy属性を負でない実数に初期化します。この値は、経度と緯度の値に対して95%の信頼度に対応しているべきです(SHOULD)。
    4. coordaltitude属性を[WGS84]楕円体からの高度で初期化するか、実装が高度の情報を提供できない場合はヌル(null)にします。
    5. coordaltitudeAccuracy属性を負でない実数で初期化するか、実装が高度の情報を提供できない場合はヌル(null)にします。高度の精度情報が提供される場合は、95%の信頼度に対応しているべきです(SHOULD)。
    6. coordspeed属性を負でない実数で初期化するか、実装が速度の情報を提供できない場合はヌル(null)にします。
    7. coordheading属性を度数で初期化するか、実装が方向の情報を提供できない場合はヌル(null)にします。ホスティング・デバイスが静止している場合は(つまり、speed属性の値が0)、headingNaNに初期化します。
  2. coords属性をcoordsに、timestamp属性をtimestampに初期化し、その[[isHighAccuracy]]内部スロットをisHighAccuracyに設定して新しく作成されたGeolocationPositionインスタンスを返します。

10. GeolocationPositionErrorインターフェース

WebIDL[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;
};

10.1 定数

PERMISSION_DENIED (数値1)
ユーザがAPIの使用許可を拒否したため、位置のリクエストに失敗した。
POSITION_UNAVAILABLE (数値2)
位置の取得に失敗した。
TIMEOUT (数値3)
ユーザ・エージェントが位置の取得に成功する前にtimeoutメンバーで指定された時間が経過した。

10.2 code属性

code属性は、初期化された値を返します(取り得る値については、10.1 定数を参照)。

10.3 message属性

message属性は、code属性を開発者が使いやすいようにテキストで記述したものです。

: ユーザへの.messageの表示の禁止

11. 許可ポリシー

ジオロケーションAPIは、"geolocation"というトークン文字列で識別されるポリシー制御の機能を定義します。そのデフォルトの許可リスト'self'です。

12. 適合性

非規範的と記している項と同じく、この仕様のすべての作成ガイドライン、図、例、注は、非規範的です。この仕様のその他の部分はすべて規範的です。

このドキュメント「することができる/してもよい(MAY)」、「しなければならない(MUST)」、「推奨される(RECOMMENDED)」、「すべきである/する必要がある(SHOULD)」というキーワードは、ここで示しているように、すべて大文字で表示されている場合にのみ、BCP 14[RFC2119] [RFC8174]で記述されているように解釈されるべきです。

A. IDL索引

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;
};

[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;
};

[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;
};

B. 索引

B.1 この仕様で定義している用語

B.2 参考文献で定義されている用語

C. 謝辞

この項は非規範的です。

この仕様は、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にも感謝申し上げます。

D. 参考文献

D.1 規範的な参考文献

[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. May 2017. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174/dd>
[webidl]
Web IDL Standard. Edgar Chen; Timothy Gu. WHATWG. Living Standard. URL: https://webidl.spec.whatwg.org/
[WGS84]
National Imagery and Mapping Agency Technical Report 8350.2, Third Edition. National Imagery and Mapping Agency. 3 January 2000.

D.2 参考情報の参考文献

[Permissions]
Permissions. Marcos Caceres; Mike Taylor. W3C. 30 July 2022. W3C Working Draft. URL: https://www.w3.org/TR/permissions/
[Permissions-Policy]
Permissions Policy. Ian Clelland. W3C. 16 July 2020. W3C Working Draft. URL: https://www.w3.org/TR/permissions-policy-1/