【この訳に特有な表記規約】
◎表記記号1. 序論
◎非規範的この~APIは、[ 実装を~hostしている~deviceのみに結付けられる所在~情報 ]への高-~levelな~interfaceを定義する。 所在~情報を成す共通的な~sourceは、 次に挙げるものを含む: ◎ Geolocation defines a high-level interface to location information associated only with the device hosting the implementation. Common sources of location information include\
- GPS( `Global Positioning System^en ) ◎ Global Positioning System (GPS)\
- 各種~network信号 — 次に挙げるものなど — から推定される所在 ⇒# IP ~address, RFID, WiFi MAC ~address, Bluetooth MAC ~address, GSM ~cell~ID, CDMA ~cell~ID ◎ and location inferred from network signals such as IP address, RFID, WiFi and Bluetooth MAC addresses, and GSM/CDMA cell IDs,\
- 利用者~入力 ◎ as well as user input.\
この~APIは ⇒# 下層の所在~情報~sourceを問わない/ ~deviceの実際の所在を返す保証は与えられない。 ◎ The API itself is agnostic of the underlying location information sources, and no guarantee is given that the API returns the device's actual location.
末端-利用者が`許可を是認した@#dfn-checking-permission$ならば、 この~APIは: ◎ If an end user grants permission, Geolocation:
-
所在~dataを次に挙げるものとして供する
- 緯度, 経度, 高度, 速さ, 進行方向
- 獲得した所在~dataの正確度
- `GeolocationPosition$I ~interfaceを介して位置が獲得された時刻の近似
-
次を~supportする:
- “一度限りな” 位置~更新 — `getCurrentPosition()$m ~methodを介して。
- ~hostしている~deviceの位置が有意に変化する度に更新を受信する能 — `watchPosition()$m ~methodを介して。
- 次を~appに許容する ⇒ `PositionOptions$I の `maximumAge$m を利用して、[ ~cacheされた位置であって,その齢は指定された値~以下であるもの ]を要請する(最後の位置に限り~cacheされる)。 ◎ Using the PositionOptions's maximumAge, allows an application to request a cached position whose age is no greater than a specified value (only the last position is cached).
- ~app用に,次を `GeolocationPositionError$I として供する ⇒ `位置を獲得する$間に生じた~errorについての更新を受信する仕方 ◎ Provides a way for the application to receive updates about errors, as a GeolocationPositionError, that have occurred while acquiring a position.
- 次を~supportする ⇒ `enableHighAccuracy$m を通して、 “正確度が高い” 位置~dataを要請する — ~UAは、 そのような要請を無視し得るが。 ◎ And through enableHighAccuracy, supports requesting "high accuracy" position data, though the request can be ignored by the user agent.
1.1. 視野
◎非規範的この仕様が供するものは、[ ~hostしている~deviceに結付けられた地理~位置~情報を検索取得する ]ための~script用の~APIに制限される。 地理~位置~情報は、 `WGS84$r の用語で供される。 それらの用語は、 いかなる種類の~markup言語も[ 地理~所在を識別する~URLを築くための新たな~URL~scheme ]の定義-法も含まない。 ◎ This specification is limited to providing a scripting API for retrieving geographic position information associated with a hosting device. The geographic position information is provided in terms of World Geodetic System coordinates [WGS84]. It does not include providing a markup language of any kind, nor does not include defining a new URL scheme for building URLs that identify geographic locations.
2. 例
◎非規範的この~APIは、[ “一度限りな” 位置~要請, 繰返される位置~更新 ]どちらも可能化するよう設計された。 共通的な利用事例を以下に挙げる例で~~説明する。 ◎ The API is designed to enable both "one-shot" position requests and repeated position updates. The following examples illustrate common use cases.
2.1. 現在の位置を取得する
◎非規範的利用者の現在の所在を要請する。 利用者がそれを許容した場合、 位置~objを取得して戻って来ることになる。 ◎ Request the user's current location. If the user allows it, you will get back a position object.
“一度限りな” 位置を要請する例: ◎ Example 1: A one-shot position request
navigator.geolocation.getCurrentPosition(%position => {
const { %latitude, %longitude } = %position.coords;
/*
所与の
( 緯度 %latitude, 経度 %longitude )
が中心に来るよう地図を示す。
◎
Show a map centered at latitude / longitude.
*/
});
2.2. 位置を注視する
◎非規範的利用者の現在の所在を注視する能を要請する。 利用者が それを許容した場合、 利用者の位置を成す継続的な更新を取得して戻って来ることになる。 ◎ Request the ability to watch user's current location. If the user allows it, you will get back continuous updates of the user's position.
繰返される更新による位置を注視する例: ◎ Example 2: Watching a position for repeated updates
const %watchId = navigator.geolocation.watchPosition(%position => {
const { %latitude, %longitude } = %position.coords;
/*
所与の
( 緯度 %latitude, 経度 %longitude )
が中心に来るよう地図を示す
◎
Show a map centered at latitude / longitude.
*/
});
2.3. 位置の注視を停止する
◎非規範的`clearWatch()$m ~methodを~callして、 位置~変化の注視を停止する。 ◎ Stop watching for position changes by calling the clearWatch() method.
`clearWatch()^m を利用する例: ◎ Example 3: Using clearWatch()
const %watchId = navigator.geolocation.watchPosition(
%position => console.log(%position)
);
function buttonClickHandler() {
/*
利用者が~buttonを~clickしたときは、
更新を取消す。
◎
Cancel the updates when the user clicks a button.
*/
navigator.geolocation.clearWatch(watchId);
}
および,~HTML `button^e — 押されたときは,位置の注視を停止する: ◎ And a HTML button that when pressed stops watching the position.
<button onclick="buttonClickHandler()"> 所在の注視を停止する Stop watching location </button>
2.4. ~errorの取扱い
◎非規範的~errorが生じたときは、[ `watchPosition()$m / `getCurrentPosition()$m ]~methodの 2 個目の引数【に渡した~callback】が[ `GeolocationPositionError$I ~error ]を引数に伴って~callされる — それは、 どこで間違ったか明らかにする助けになろう。 ◎ When an error occur, the second argument of the watchPosition() or getCurrentPosition() method gets called with a GeolocationPositionError error, which can help you figure out what might have gone wrong.
~errorを取扱う例: ◎ Example 4: Handling errors
/* 繰返される更新を要請する。 ◎ Request repeated updates. */ const %watchId = navigator.geolocation.watchPosition( %scrollMap, %handleError ); function scrollMap(%position) { const { %latitude, %longitude } = %position.coords; /* 地図を ( 緯度 %latitude, 経度 %longitude ) へ~scrollする。 ◎ Scroll map to latitude / longitude. */ } function handleError(%error) { /* ~error~codeに基づいて~errorを表示する。 ◎ Display error based on the error code. */ const { %code } = %error; switch (%code) { case GeolocationPositionError.TIMEOUT: /* 時間切れを取扱う。 ◎ Handle timeout. */ break; case GeolocationPositionError.PERMISSION_DENIED: /* 利用者は要請を否認した。 ◎ User denied the request. */ break; case GeolocationPositionError.POSITION_UNAVAILABLE: /* 位置は可用でない。 ◎ Position not available. */ break; } }
2.5. ~cache制御としての `maximumAge^m の利用-法
◎非規範的この~APIは,既定では、 以前に獲得して~cacheした位置がある限り,常に それを返すよう試みる。 この例では、 齢が 10 分~以下の位置を受容する。 ~cacheされた位置~objとして十分に新鮮なものが無い場合、 ~UAは,新たな位置を自動的に獲得する。 ◎ By default, the API always attempts to return a cached position so long as it has a previously acquired position. In this example, we accept a position whose age is no greater than 10 minutes. If the user agent does not have a fresh enough cached position object, it automatically acquires a new position.
~cacheされた位置を取得する例: ◎ Example 5: Getting cached position
navigator.geolocation.getCurrentPosition(
%successCallback,
console.error,
{ maximumAge: 600_000 }
);
function successCallback(%position) {
/*
`maximumAge$m ~memberを利用することで、
位置~objの齢は 10 分~以下になることが保証される。
◎
By using the 'maximumAge' member above, the position object is guaranteed to be at most 10 minutes old.
*/
}
2.6. `timeout^m の利用-法
◎非規範的所在~情報を時間に敏感な方式で要求する場合、 `PositionOptions$I の `timeout$m ~memberを利用して, `位置を獲得する$際に待機する用意がある時間の量を制限できる。 ◎ If you require location information in a time sensitive manner, you can use the PositionOptions timeout member to limit the amount of time you are willing to wait to acquire a position.
位置~要請が時間切れになる例 ◎ Example 6: Timing out a position request
/* 位置を要請する — 10 秒までに限り待機する用意がある。 ◎ Request a position. We are only willing to wait 10 seconds for it. */ navigator.geolocation.getCurrentPosition( %successCallback, %errorCallback, { timeout: 10_000 } ); function %successCallback(%position) { /* 要請は 10 秒~以内に完遂した... ◎ Request finished in under 10 seconds... */ } function %errorCallback(%error) { switch (%error.code) { case GeolocationPositionError.TIMEOUT: /* 時間内に取得できなかった。 ◎ We didn't get it in a timely fashion. */ doFallback(); /* 新たな位置~objを獲得する — ~~時間が許す限り。 ◎ Acquire a new position object, as long as it takes. */ navigator.geolocation.getCurrentPosition( %successCallback, %errorCallback ); break; case "...": /* 他の~error事例を扱う。 ◎ treat the other error cases. */ } } function doFallback() {}
2.7. 第三者-主体~文脈における~APIの可能化-法
◎非規範的`既定の許容list$ `'self'$l の下では、 入子な~frameにおける この~APIの利用eは, その内容が同一-生成元に属する場合に限り許容され, 第三者-主体に属する場合には防止される。 ◎ The default allowlist of 'self' allows API usage in same-origin nested frames but prevents third-party content from using the API.
第三者-主体による利用eは、 `iframe$e 要素に[ 値 `geolocation^l を伴う `allow$a 属性 ]を追加することにより,選択的に可能化できる: ◎ Third-party usage can be selectively enabled by adding the allow="geolocation" attribute to an iframe element:
`iframe^e 内で この~APIを可能化する例: ◎ Example 7: Enabling Geolocation in an iframe
<iframe src="https://third-party.com" allow="geolocation"> </iframe>
逆に,~HTTP応答~headerを指定すれば、 当事者-主体に属する文脈においても,この~APIを不能化できる: ◎ Alternatively, the API can be disabled in a first-party context by specifying an HTTP response header:
許可~施策を~HTTP越しに送達する例: ◎ Example 8: Permissions Policy over HTTP
Permissions-Policy: geolocation=()
【 これは、 `geolocation$l ~memberの値が空な~listであり, この~APIが許可される`生成元$は無いことを表す。 】
`Permissions-Policy$h ~HTTP~headerについての詳細は、 `Permissions-Policy$r を見よ。 ◎ See Permissions Policy for more details about the Permissions-Policy HTTP header.
3. ~privacyの考慮点
◎非規範的この~APIは、 ~hostしている~deviceの地理~所在を検索取得するために利用される。 この情報は、 ほぼすべての事例で, ~deviceの利用者の所在を開示する — それは、 利用者の~privacyを弱体化させるものになり得る。 ◎ The API defined in this specification is used to retrieve the geographic location of a hosting device. In almost all cases, this information also discloses the location of the user of the device, thereby potentially compromising the user's privacy.
3.1. 利用者-同意
◎非規範的この~APIは、[ 所在~dataが~web~appと共有される前に,末端-利用者が`許可を表出する$ ]ことを要求する`強力な特能$である。 この要件は、 `許可を検査する$手続きにより規範的に施行される — [ `getCurrentPosition()$m, `watchPosition()$m ]~methodは、 それに依拠する。 ◎ Geolocation is a powerful feature that requires express permission from an end-user before any location data is shared with a web application. This requirement is normatively enforced by the check permission steps on which the getCurrentPosition() and watchPosition() methods rely.
末端-利用者は、 一般に,~UIを通して`許可を表出する$。 そのような~UIは、 通例的に,末端-利用者が許可の`存続期間$として選べる範囲を呈示する。 `存続期間$の選択肢は,~UAに応じて変わるが、 概して[ 時間に基づく(例: “1 日" ) ]か[ ~browserが閉じられるまで ]であり,[ 許可を不定期に是認する選択肢 ]までも与えられるかもしれない。 許可の`存続期間$ — ~UAが末端-利用者に対し[ 後続な利用に際して,新たな選択肢を為す ]よう~promptして選ばれたそれ — は、 ~UAが当の許可を いつまで — それが自動的に`既定の許可~状態$に復帰されるまでの中で,いつまで — `是認-$するかを規定する。 ◎ An end-user will generally give express permission through a user interface, which usually present a range of permission lifetimes that the end-user can choose from. The choice of lifetimes vary across user agents, but they are typically time-based (e.g., "a day"), or until browser is closed, or the user might even be given the choice for the permission to be granted indefinitely. The permission lifetimes dictate how long a user agent grants a permission before that permission is automatically reverted back to its default permission state, prompting the end-user to make a new choice upon subsequent use.
許可の`存続期間$の粒度は,~UAに応じて変わるが、 ~UAには,存続期間を[ 既定では,単独の閲覧~sessionに制限する ]ことが督促される (規範的な要件は、 `§ ~APIを利用する許可の検査-法@#check-permission$を見よ)。 ◎ Although the granularity of the permission lifetime varies across user-agents, this specification urges user agents to limit the lifetime to a single browsing session by default (see 3.4 Checking permission to use the API for normative requirements).
3.2. 所在~情報の受信者~向けの~privacyの考慮点
◎非規範的注記: この敏感な~dataに伴う開発者の責務 ◎ Note: Developers' responsibility with this sensitive data
この節は、 “受信者” に適用される — 受信者とは、 一般に,この~APIを用立てている開発者を意味する。 この節の要件を[ ~UA/この仕様 ]が施行することはアリでないが、 開発者は、 この節を注意深く読んで,以下に与える示唆を固守するよう最善を尽くす必要がある。 開発者は、 各国の司法には[ 利用者の所在~dataに対する[ 用法/~access ]を統治し得る~privacyの法律 ]があるかもしれないことを自覚する必要がある。 ◎ This section applies to "recipients", which generally means developers utilizing Geolocation. Although it's impossible for the user agent, or this specification, to enforce these requirements, developers need to read this section carefully and do their best to adhere to the suggestions below. Developers need to be aware that there might be privacy laws in their jurisdictions that can govern the usage and access to users' location data.
受信者は、 必要yなときに限り,位置~情報を要請するべき【 `ought^en, 以下同様】である。 受信者は、 自身の~taskに供された所在~情報を その~task用に限り利用するべきであり, ~taskを完了したなら — 利用者から当の所在~情報を維持する許可が表出されない限り — それを処分するべきである。 受信者は、 この情報を無権限な~accessに抗して保護する措置をとる必要もある。 所在~情報を どこかに格納する場合、 それを[ 更新する/削除する ]ことを利用者に許容する必要がある。 ◎ Recipients ought to only request position information when necessary, and only use the location information for the task for which it was provided to them. Recipients ought to dispose of location information once that task is completed, unless expressly permitted to retain it by the user. Recipients need to also take measures to protect this information against unauthorized access. If location information is stored, users need to be allowed to update and delete this information.
所在~情報の受信者は、 利用者により許可が表出されない限り, 所在~情報を伝送し直すことを控える必要がある。 伝送し直すときは、 【他から保護するよう】~careする必要がある — その際には、 暗号化の利用が奨励される。 ◎ The recipients of location information need to refrain from retransmitting the location information without the user’s express permission. Care needs to be taken when retransmitting and the use of encryption is encouraged.
受信者は、 次について,明瞭かつ目立つように開示するべきである:
- 所在~dataを収集している事実
- 収集の目的
- 当の~dataはいつまで維持されるか
- 当の~dataはどう~secure化されるか
- 当の~dataが共有される場合,どう共有されるか
- 利用者は当の~dataに対し,どう[ ~access, 更新-, 削除- ]できるか
- 当の~dataに関して利用者に与えられる他の選択肢
この開示は、 上に挙げた指針に対する例外があれば,その説明を含める必要がある。
◎ Recipients ought to clearly and conspicuously disclose the fact that they are collecting location data, the purpose for the collection, how long the data is retained, how the data is secured, how the data is shared if it is shared, how users can access, update and delete the data, and any other choices that users have with respect to the data. This disclosure needs to include an explanation of any exceptions to the guidelines listed above.3.3. 実装の考慮点
◎非規範的実装者には、 次に挙げる[ 利用者の~privacyに対し負に影響し得る側面 ]を考慮することを勧める: ◎ Implementers are advised to consider the following aspects that can negatively affect the privacy of their users:\
- 利用者は、 自身の所在を~web~siteに開示する許可を~UAに不作為に是認し得ることもある。 ◎ in certain cases, users can inadvertently grant permission to the user agent to disclose their location to websites.\
- ある種の~URLにて~hostされる内容は、 利用者が[ それまで是認していた所在~許可を もはや是認しなくなる ]ような仕方で変化することもある — あるいは、 利用者は単純に気が変わるかもしれない。 ◎ In other cases, the content hosted at a certain URL changes in such a way that the previously granted location permissions no longer apply as far as the user is concerned. Or the users might simply change their minds.
これらの状況を[ 予測する/防止する ]ことは、 内来的に困難である。 軽減策と綿密な防御上の措置は、 実装の責務であり,この仕様には制定されない。 しかしながら、 実装者が これらの措置を設計するときには,次を行うことを勧める ⇒# 所在が共有されることについて利用者に自覚を促す。 許可の~revocationを可能化する~UIへの~accessを供する。 ◎ Predicting or preventing these situations is inherently difficult. Mitigation and in-depth defensive measures are an implementation responsibility and not prescribed by this specification. However, in designing these measures, implementers are advised to enable user awareness of location sharing, and to provide access to user interfaces that enable revocation of permissions.
3.4. ~APIを利用する許可の検査-法
この~APIは、 `名前$ `geolocation@l により識別される`既定の強力な特能$である。 ◎ Geolocation is a default powerful feature identified by the name "geolocation".
この~APIを利用する `許可を検査する@ ときは、 ~UAは,`許可$の`存続期間$として[ 24 ~~時間, 1 週間, など,時間に基づくそれ ]あるいは[ 許可を不定期に是認する選択肢 ]を示唆してもヨイ。 しかしながら、 ~UAには,[ `存続期間$を単独の~sessionに制約する ]ことを優先することが推奨される — 例えば,次に挙げるような ⇒# `~realm$enVが破壊されるまで/ 末端-利用者が ある`生成元$から他へ`~navigate$するまで/ 関連な~browser~UItabが閉じられるまで ◎ When checking permission to use the API, a user agent MAY suggest time-based permission lifetimes, such as "24 hours", "1 week", or choose to remember the permission grant indefinitely. However, it is RECOMMENDED that a user agent prioritize restricting the permission lifetime to a single session: This can be, for example, until the realm is destroyed, the end-user navigates away from the origin, or the relevant browser tab is closed.
4. ~securityの考慮点
この~APIに結付けられる~securityの考慮点は、 公表~時点においては無い。 しかしながら、 読者には `§ ~privacyの考慮点@#privacy$を読むことを勧める。 ◎ There are no security considerations associated with Geolocation at the time of publication. However, readers are advised to read the 3. Privacy considerations.
6. `Geolocation^I ~interfaceと~callback
[`Exposed$=Window] interface `Geolocation@I { `undefined$ `getCurrentPosition$m ( `PositionCallback$I %successCallback, optional `PositionErrorCallback$I? %errorCallback = null, optional `PositionOptions$I %options = {} ); `long$ `watchPosition$m ( `PositionCallback$I %successCallback, optional `PositionErrorCallback$I? %errorCallback = null, optional `PositionOptions$I %options = {} ); `undefined$ `clearWatch$m (`long$ %watchId); }; callback `PositionCallback@I = `undefined$ ( `GeolocationPosition$I %position ); callback `PositionErrorCallback@I = `undefined$ ( `GeolocationPositionError$I %positionError );
`Geolocation$I の各~instanceは、 次に挙げる内部~slotを伴って作成される: ◎ 6.1. Internal slots ◎ Instances of Geolocation are created with the internal slots in the following table: ◎ Internal slot|Description
- `cachedPosition@sl
- ~NULL / `GeolocationPosition$I ~obj — ~NULL に初期化される。 ~NULL でないならば、 最後に獲得された位置への参照を与える~cacheとして~serveする。 ~UAは、 いつでも, 理由を問わず, `cachedPosition$sl を ~NULL に設定し直して抹消してもヨイ。 ◎ 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@sl
- 整数( `unsigned long^c 型)たちが成す`~list$ — 初期~時は空とする。 ◎ Initialized as an empty list of unsigned long items.
`getCurrentPosition(successCallback, errorCallback, options)@m ~method手続きは: ◎ 6.2. getCurrentPosition() method ◎ The getCurrentPosition(successCallback, errorCallback, options) method steps are:
-
~IF[ コレに`関連な大域~obj$に`結付けられた文書$は`全部的に作動中$でない ]: ◎ Candidate Correction: Updated reference to the global object to use this for consistency in error handling within geolocation retrieval. - If the current settings object's relevant global object's associated Document is not fully active: + If this's relevant global object's associated Document is not fully active:
- `~error~callbackを~queueする$( %errorCallback, `POSITION_UNAVAILABLE$m ) ◎ Call back with error errorCallback and POSITION_UNAVAILABLE.
- ~RET ◎ Terminate this algorithm.
- `位置を要請する$( コレ, %successCallback, %errorCallback, %options ) ◎ Request a position passing this, successCallback, errorCallback, and options.
`watchPosition(successCallback, errorCallback, options)@m ~method手続きは: ◎ 6.3. watchPosition() method ◎ The watchPosition(successCallback, errorCallback, options) method steps are:
-
~IF[ コレに`関連な大域~obj$に`結付けられた文書$は`全部的に作動中$でない ]: ◎ Candidate Correction: Simplified reference to the global object in the method steps for checking document's activity status. - If the current settings object's relevant global object's associated Document is not fully active: + If this's relevant global object's associated Document is not fully active:
- `~error~callbackを~queueする$( %errorCallback, `POSITION_UNAVAILABLE$m ) ◎ Call back with error passing errorCallback and POSITION_UNAVAILABLE.
- ~RET 0 ◎ Return 0.
-
%注視-~ID ~LET `実装定義$な正な整数( `unsigned long^c 型) ◎ Let watchId be an implementation-defined unsigned long that is greater than zero.
【 この整数は、 コレ.`watchIDs$sl の中で一意になるよう~~選ばれるべきであろう。 さもなければ、 `clearWatch()$m ~methodの挙動に影響するので。 】
- コレ.`watchIDs$sl に %注視-~ID を`付加する$ ◎ Append watchId to this's [[watchIDs]].
- `位置を要請する$( コレ, %successCallback, %errorCallback, %options, %注視-~ID ) ◎ Request a position passing this, successCallback, errorCallback, options, and watchId.
- ~RET %注視-~ID ◎ Return watchId.
`clearWatch(watchId)@m ~method手続きは: ◎ 6.4. clearWatch() method ◎ When clearWatch() is invoked, the user agent MUST:
- コレ.`watchIDs$sl から %watchId を`除去する$ ◎ Remove watchId from this's [[watchIDs]].
各種~algo
`位置を要請する@ ときは、 所与の ⇒# `Geolocation$I %地理所在~obj, `PositionCallback$I %成功-~callback, `PositionErrorCallback$I %~error~callback, `PositionOptions$I %~option群, %注視-~ID (省略時は ε ) ◎終 に対し: ◎ 6.5. Request a position ◎ To request a position, pass a Geolocation geolocation, a PositionCallback successCallback, a PositionErrorCallback? errorCallback, a PositionOptions options, and an optional watchId:
- %注視-~ID群 ~LET %地理所在~obj .`watchIDs$sl ◎ Let watchIDs be geolocation's [[watchIDs]].
- %文書 ~LET %地理所在~obj に`関連な大域~obj$に`結付けられた文書$ ◎ Let document be the geolocation's relevant global object's associated Document.
-
~IF[ %文書 には `geolocation^l 特能の`利用は許容されて$いない ]: ◎ If document is not allowed to use the "geolocation" feature:
- ~IF[ %注視-~ID ~NEQ ε ] ⇒ %注視-~ID群 から %注視-~ID を`除去する$ ◎ If watchId was passed, remove watchId from watchIDs.
- `~error~callbackを~queueする$( %~error~callback, `PERMISSION_DENIED$m ) ◎ Call back with error passing errorCallback and PERMISSION_DENIED.
- ~RET ◎ Terminate this algorithm.
-
~IF[ %地理所在~obj に`関連な設定群~obj$【!`環境~設定群~obj$】は`~secureな文脈$enVでない ]: ◎ Candidate Correction: Added missing step to handle non-secure contexts. ◎ + If geolocation's environment settings object is a non-secure context:
- ~IF[ %注視-~ID ~NEQ ε ] ⇒ %注視-~ID群 から %注視-~ID を`除去する$ ◎ + If watchId was passed, remove watchId from watchIDs.
- `~error~callbackを~queueする$( %~error~callback, `PERMISSION_DENIED$m ) ◎ + Call back with error passing errorCallback and PERMISSION_DENIED.
- ~RET ◎ + Terminate this algorithm.
-
~IF[ %文書 の`可視性~状態$doc ~EQ `hidden^l ] ⇒ [ %文書 の`可視性~状態$doc ~EQ `visible^l ]が満たされるまで待機した上で、 この手続きの以降を`~page可視性~変化-時の手続き$として継続する ◎ If document's visibility state is "hidden", wait for the following page visibility change steps to run: • Assert: document's visibility state is "visible". • Continue to the next steps below.
- %記述子 ~LET 新たな `PermissionDescriptor$I ◎ Let descriptor be a new PermissionDescriptor\
- %記述子[ "`name^m" ] ~SET `geolocation$l ◎ whose name is "geolocation".
-
この段は`並列的$に走らす: ◎ In parallel:
- %許可 ~SET `利用する許可を要請する$( %記述子 ) ◎ Set permission to request permission to use descriptor.
-
~IF[ %許可 ~EQ `denied$l ]: ◎ If permission is "denied", then:
- ~IF[ %注視-~ID ~NEQ ε ] ⇒ %注視-~ID群 から %注視-~ID を`除去する$ ◎ If watchId was passed, remove watchId from watchIDs.
- `~error~callbackを~queueする$( %~error~callback, `PERMISSION_DENIED$m ) ◎ Call back with error passing errorCallback and PERMISSION_DENIED.
- ~RET ◎ Terminate this algorithm.
- `位置を獲得する$( ↓ ) ⇒# %地理所在~obj, %成功-~callback, %~error~callback, %~option群, %注視-~ID ◎ Wait to acquire a position passing successCallback, errorCallback, options, and watchId.
- ~IF[ %注視-~ID ~EQ ε ] ⇒ ~RET ◎ If watchId was not passed, terminate this algorithm.
-
~WHILE[ %注視-~ID ~IN %注視-~ID群 ]: ◎ While watchIDs contains watchId:
-
地理~位置の有意な変化を待機する
何が地理~位置の有意な変化を成すかは、 実装に委ねられる。 ~UAは、 位置~変化が報告される~~頻度に上限を課してもヨイ。
◎ Wait for a significant change of geographic position. What constitutes a significant change of geographic position is left to the implementation. User agents MAY impose a rate limit on how frequently position changes are reported. -
~IF[ %文書 は`全部的に作動中$でない ]~OR[ %文書 の`可視性~状態$doc ~NEQ `visible^l ] ⇒ ~CONTINUE ◎ If document is not fully active or visibility state is not "visible", go back to the previous step and again wait for a significant change of geographic position.
注記: ここで欲される効果は、 文書が[ 全部的に作動中かつ可視 ]を満たす間に限り,位置~更新を送達することである — 満たさない間は、 更新は “握り潰される” 。 【!Only once a.. 不要なので略】 ◎ Note: Position updates are exclusively for fully-active visible documents ◎ The desired effect here being that position updates are exclusively delivered to fully active documents that are visible; Otherwise the updates get silently "dropped on the floor". Only once a document again becomes fully active and visible (e.g., an iframe gets reattached to a parent document), do the position updates once again start getting delivered.
- `位置を獲得する$( ↓ ) ⇒# %地理所在~obj, %成功-~callback, %~error~callback, %~option群, %注視-~ID ◎ Wait to acquire a position passing successCallback, errorCallback, options, and watchId.
-
`位置を獲得する@ ときは、 所与の ⇒# `Geolocation$I %地理所在~obj【この引数は、この訳による補完】, `PositionCallback$I %成功-~callback, `PositionErrorCallback$I %~error~callback, `PositionOptions$I %~option群, %注視-~ID (省略時は ε ) ◎終 に対し: ◎ 6.6. Acquire a position ◎ To acquire a position, passing PositionCallback successCallback, a PositionErrorCallback? errorCallback, PositionOptions options, and an optional watchId.
- ~IF[ %注視-~ID ~NEQ ε ]~AND[ %注視-~ID ~NIN %地理所在~obj .`watchIDs$sl ] ⇒ ~RET ◎ If watchId was passed and this's [[watchIDs]] does not contain watchId, terminate this algorithm.
- %獲得~時刻 ~LET 現時刻を表現する `EpochTimeStamp$I 値 ◎ Let acquisitionTime be a new EpochTimeStamp that represents now.
- %時間切れ時刻 ~LET %獲得~時刻 ~PLUS %~option群[ "`timeout$m" ] ◎ Let timeoutTime be the sum of acquisitionTime and options.timeout.
- %~cacheされた位置 ~LET %地理所在~obj .`cachedPosition$sl ◎ Let cachedPosition be this's [[cachedPosition]].
- %高い正確aさを可能化するか ~LET %~option群[ "`enableHighAccuracy$m" ] ◎ ↓
- %最大な齢 ~LET %~option群[ "`maximumAge$m" ] ◎ ↓
- %~error ~LET ε ◎ ↓↓
-
実装に特有な~taskを作成して,その中で次の手続きを走らす — これは、 %時間切れ時刻 を経過するまで,~deviceの位置を獲得するよう試行する: ◎ Create an implementation-specific timeout task that elapses at timeoutTime, during which it tries to acquire the device's position by running the following steps:
- %許可 ~LET `現在の許可~状態を取得する$( `geolocation$l ) ◎ Let permission be get the current permission state of "geolocation".
-
~IF[ %許可 ~EQ `denied$l ] ⇒# %~error ~SET `PERMISSION_DENIED$m; ~RET ◎ If permission is "denied": • Stop timeout. • Do the user or system denied permission failure case step.
注記: 【!Browser permission VS OS permission】 ある種の~platformでは、[ ~browser~levelでは,利用者が この~APIを利用する`許可$を~UAに`是認-$した ]としても[ ~OS~levelでは,所在~serviceに~accessする許可は否認されている ]状況下にあることもある。 ◎ ↓↓
-
~ELIF[ %許可 ~EQ `granted$l ]: ◎ If permission is "granted":
- %位置 ~LET ~NULL ◎ Let position be null.
-
~IF[ %~cacheされた位置 ~NEQ ~NULL ]~AND[ %最大な齢 ~GT 0 ]: ◎ If cachedPosition is not null, and options.maximumAge is greater than 0:
-
~IF[ %~cacheされた位置 の `timestamp$m 値 ~PLUS %最大な齢 ~GT %獲得~時刻 ]~AND[ %~cacheされた位置 .`isHighAccuracy$sl ~EQ %高い正確aさを可能化するか ]: ◎ Let cacheTime be acquisitionTime minus the value of the options.maximumAge member. ◎ Candidate Correction: Updated to ensure that the algorithm terminates immediately if a valid cached position is used, avoiding unnecessary steps. ◎ If cachedPosition's timestamp's value is greater than cacheTime, and cachedPosition.[[isHighAccuracy]] equals options.enableHighAccuracy - , set position to cachedPosition. + :
-
`~taskを~queueする$( `地理所在~task~source$, 次の手続き )
手続きは ⇒ `~callback関数を呼出す$( %成功-~callback, « %~cacheされた位置 », `報告する^i )◎ + Queue a task on the geolocation task source with a step that invokes successCallback with « cachedPosition » and "report". - ~RET ◎ + Terminate this algorithm.
-
-
-
~ELIF[ %~cacheされた位置 ~NEQ %位置 ]: ◎ Otherwise, if position is not cachedPosition,\
【 この条件は、 誤り(不要?)に思われる。 この時点では %位置 ~EQ ~NULL なので, %~cacheされた位置 ~NEQ ~NULL と同義になるが、 だとすると `cachedPosition$sl は ~NULL のまま変化し得なくなり, この段は決して遂行されなくなるので。 】
- %時間切れ時刻 を経過するまで,下層の~systemから位置~dataを獲得するよう試行する — 任意選択で, %高い正確aさを可能化するか も考慮に入れて ◎ try to acquire position data from the underlying system, optionally taking into consideration the value of options.enableHighAccuracy during acquisition.
-
~IF[ 位置~dataを獲得できなかった ]:
- %~error ~SET [ %時間切れ時刻 を経過したならば `TIMEOUT$m / 他の事由で失敗したならば `POSITION_UNAVAILABLE$m ]
- ~RET
-
%位置~data ~LET 獲得した位置~data — 次に挙げるものからなる: ◎ If acquiring the position data from the system succeeds: ◎ Candidate Correction: We now use a map to represent the position data. Clarified the units and reference systems for latitude, longitude, and altitude, ensuring consistency with the updated attribute definitions. Updated the descriptions of the speed and heading to specify measurement units and conditions for null values, aligning with the overall enhancements to attribute accuracy and clarity. • + Let positionData be a map with the following name/value pairs based on the acquired position data:
- 緯度 【これは,原文には無いが、明らかに記載漏れであろう。】 ⇒ 地球の表面~上の緯度~座標を `WGS84$r 座標系を利用して度数で表現する実数。
- 経度 ⇒ 地球の表面~上の経度~座標を `WGS84$r 座標系を利用して度数で表現する実数。 経度は、 ある地点が`本初子午線@https://ja.wikipedia.org/wiki/%E6%9C%AC%E5%88%9D%E5%AD%90%E5%8D%88%E7%B7%9A$から東または西へどれだけ遠いかを測定する。 ◎ • + "longitude" •• + A 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.
- 高度 ⇒ `WGS84$r 楕円体~上の高度を~meter数で表現する実数 — 可用でない場合は ~NULL 。 高度は、 海面からの高さを測定する。 ◎ • + "altitude" •• + A double? that represents the altitude in meters above the [WGS84] ellipsoid, or null if not available. Altitude measures the height above sea level.
- 正確度 ⇒ 【経度, 緯度の】正確度を`信頼区間$ 95% で指示する~meter数で表現する負でない実数。 正確度は、 測定された座標が本当の位置にどれだけ近いかを測定する。 ◎ • + "accuracy" •• + A non-negative 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.
- 高度~正確度 ⇒ 高度の正確度を`信頼区間$ 95% で指示する~meter数で表現する負でない実数 — 可用でない場合は ~NULL 。 高度の正確度は、 測定された高度が本当の高度にどれだけ近いかを測定する。 ◎ • + "altitudeAccuracy" •• + A non-negative 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.
- 速さ ⇒ 速さを~meter数(毎秒)で表現する負でない実数 — 可用でない場合は ~NULL 。 速さは、 ~deviceがどれだけ速く動いているかを測定する。 ◎ • + "speed" •• + A non-negative double? that represents the speed in meters per second, or null if not available. Speed measures how fast the device is moving.
- 進行方向 ⇒ 進行方向を度数で表現する実数 — [ 可用でない場合/当の~deviceが~~静止している場合 ]は ~NULL 。 進行方向は、 当の~deviceが動いている方向を真北に相対的に測定する。 ◎ • + "heading" •• + A 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.
- %地理-座標~obj ~LET 新たな `GeolocationCoordinates$I ~obj — その各~属性を以下のとおり初期化する ⇒# `latitude$m ~SET %位置~data の緯度 `longitude$m ~SET %位置~data の経度 `altitude$m ~SET %位置~data の高度 `accuracy$m ~SET %位置~data の正確度 `altitudeAccuracy$m ~SET %位置~data の高度~正確度 `speed$m ~SET %位置~data の速さ `heading$m ~SET %位置~data の進行方向 ◎ ↑
- %位置 ~LET 新たな `GeolocationPosition$I ~instance — その ⇒# `coords$m 属性 ~SET %地理-座標~obj, `timestamp$m 属性 ~SET %獲得~時刻, `isHighAccuracy$sl ~SET %高い正確aさを可能化するか ◎ + Set position to a new GeolocationPosition passing positionData, acquisitionTime and options.enableHighAccuracy. + Set this's [[cachedPosition]] to position. ◎ - Set position be a new GeolocationPosition passing acquisitionTime and options.enableHighAccuracy. - Set this's [[cachedPosition]] to position.
- %地理所在~obj . `cachedPosition$sl ~SET %位置 ◎ ↑
-
`~taskを~queueする$( `地理所在~task~source$, 次の手続き )
手続きは ⇒ `~callback関数を呼出す$( %成功-~callback, « %位置 », `報告する^i )◎ Stop the timeout. ◎ Queue a task on the geolocation task source with a step that invokes successCallback with « position » and "report".
- 【 ~ELSE(すなわち %許可 ~EQ `prompt$l ) ⇒ この事例の取扱いは、 原文には述べられていない。 値 `prompt^l は,~UAが利用者に対し許可を依頼するために~promptすることを指示するが、 `timeout$m に対する注記は,この事例にかかる時間は含まれないことを示唆している。 この~promptは、 すでに済んだ(なので,この事例は生じ得ない)ものと見做されているのかもしれない。 】
- 前段の~taskが完了するまで待機した上で ⇒ ~IF[ %~error ~NEQ ε ] ⇒ `~error~callbackを~queueする$( %~error~callback, %~error ) ◎ Dealing with failures: • If acquiring a position fails, do one of the following based on the condition that matches the failure: •• User or system denied permission: ••• Call back with error passing errorCallback and PERMISSION_DENIED. •• Note: Browser permission VS OS permission ••• On certain platforms, there can be a circumstance where the user has granted the user agent permission to use Geolocation at the browser-level, but the permission to access location services has been denied at the OS level. •• Timeout elapsed: ••• Call back with error with errorCallback and TIMEOUT. •• Data acquisition error or any other reason: ••• Call back with error passing errorCallback and POSITION_UNAVAILABLE.
`~error~callbackを~queueする@ ときは、 所与の ( `PositionErrorCallback$I %~callback, %~code ~IN { 1, 2, 3 } ) に対し: ◎ 6.7. Call back with error ◎ When instructed to call back with error, given an PositionErrorCallback? callback and an unsigned short code:
- ~IF[ %~callback ~EQ ~NULL ] ⇒ ~RET ◎ If callback is null, return.
- %~error ~LET 新たな `GeolocationPositionError$I — その ⇒# `code$m 属性 ~SET %~code ◎ Let error be a newly created GeolocationPositionError instance whose code attribute is initialized to code.
-
`~taskを~queueする$( `地理所在~task~source$, 次の手続き )
手続きは ⇒ `~callback関数を呼出す$( %~callback, « %~error », `報告する^i )◎ Queue a task on the geolocation task source with a step that invokes callback with « error » and "report".
7. `PositionOptions^I 辞書
dictionary `PositionOptions@I { `boolean$ `enableHighAccuracy$m = false; [`Clamp$] `unsigned long$ `timeout$m = 0xFFFFFFFF; [`Clamp$] `unsigned long$ `maximumAge$m = 0; };
- `enableHighAccuracy@m ◎ 7.1. enableHighAccuracy member
- 次についての~hintを供する ⇒ 当の~appは、 最も正確aな所在~dataを受信したいか否か。 ◎ The enableHighAccuracy member provides a hint that the application would like to receive the most accurate location data.\
- この~memberに意図される目的は、 ~appが[ 実装に,正確度が高い地理所在を要求するか否か伝える ]ことを許容することである。 【 ~F の場合、】 実装は,地理所在を供する~deviceとして[ 有意な量の電力を消費するもの(例: GPS ) ]を利用するのを避けてもヨイ。 ◎ The intended purpose of this member is to allow applications to inform the implementation that they do not require high accuracy geolocation fixes and, therefore, the implementation MAY avoid using geolocation providers that consume a significant amount of power (e.g., GPS).
- 注記: この~memberに ~T を指定した場合、[ 応答~時間が遅くなる/電力~消費が増す ]ことにもなり得る。 利用者は,この能力を不能化するかもしれないし、 ~deviceは,[ ~F が指定された場合より正確aな結果 ]を供することは可能でないかもしれない。 ◎ Note: A word of warning about enableHighAccuracy ◎ The enableHighAccuracy member can result in slower response times or increased power consumption. The user might also disable this capability, or the device might not be able to provide more accurate results than if the flag wasn't specified.
- `timeout@m ◎ 7.2. timeout member
- `位置を獲得する$際に待機する用意がある時間を~milli秒数で表出する。 ◎ The timeout member denotes the maximum length of time, expressed in milliseconds, before acquiring a position expires.
- 注記: この~memberが受持つ期間には、[ 文書が可視になるまで待機する時間, `~APIを利用する許可を得する@#dfn-checking-permission$まで費やされる時間 ]は含まれない。 この~memberは、 `位置を獲得する$手続きが始まって以降に限り適用される。 ◎ Note: When is the timeout calculated? ◎ The time spent waiting for the document to become visible and for obtaining permission to use the API is not included in the period covered by the timeout member. The timeout member only applies when acquiring a position begins.
- 注記: `timeout$m 用の値 0 は、 【`位置を獲得する$手続きを】即時に失敗させ得る。 ◎ Note: Immediate cancellation ◎ An options.timeout value 0 can cause immediate failures.
- `maximumAge@m ◎ 7.3. maximumAge member
- 次を指示する時間を~milli秒数で指定する ⇒ ~web~appは、 ~cacheされた位置を[ その齢が この時間~以下 ]ならば受容する用意がある。 ◎ The maximumAge member indicates that the web application is willing to accept a cached position whose age is no greater than the specified time in milliseconds.
8. `GeolocationPosition^I ~interface
[`Exposed$=Window, `SecureContext$] interface `GeolocationPosition@I { readonly attribute `GeolocationCoordinates$I `coords$m; readonly attribute `EpochTimeStamp$I `timestamp$m; [`Default$] `object$ `toJSON$m(); };
- `coords@m ◎ 8.1. coords attribute
- この属性は、 地理~座標を包含する。 ◎ The coords attribute contains geographic coordinates.
- `timestamp@m ◎ 8.2. timestamp attribute
- この属性は、 ~deviceの地理~位置が獲得された時刻を表現する。 ◎ The timestamp attribute represents the time when the geographic position of the device was acquired.
- `toJSON()@m ◎ 8.3 toJSON() method
- `GeolocationPosition$I ~objの~JSON表現を返す。 ◎ Candidate Addition: Introduce a toJSON() method to allow the GeolocationPosition object to be easily converted into a JSON representation, facilitating interoperability and ease of use in web applications. + The toJSON() method returns a JSON representation of the GeolocationPosition object.
`GeolocationPosition$I 【!`GeolocationPositionError$I】の各~instanceは、 次に挙げる内部~slotを伴って作成される: ◎ 8.4. Internal slots ◎ Instances of GeolocationPositionError are created with the internal slots in the following table: ◎ Internal slot|Description
- `isHighAccuracy@sl
- 真偽値 — この~instanceの`作成-時@#_new-geolocationposition$における `enableHighAccuracy$m ~member用の値を記録する。 ◎ A boolean that records the value of the enableHighAccuracy member when this GeolocationPosition is created.
この仕様は、 `~task~source$として `地理所在~task~source@ を定義する。 それは、 `位置を要請する$するとき,他を阻まない[ `PositionCallback$I, `PositionErrorCallback$I ]を~queueしておくために利用される。 ◎ 8.5. Task sources ◎ The following task source is defined by this specifications. • The geolocation task source •• Used by this specification to queue up non-blocking PositionCallback and PositionErrorCallback when performing position requests.
9. `GeolocationCoordinates^I ~interface
[`Exposed$=Window, `SecureContext$] interface `GeolocationCoordinates@I { readonly attribute `double$ `accuracy$m; readonly attribute `double$ `latitude$m; readonly attribute `double$ `longitude$m; readonly attribute `double$? `altitude$m; readonly attribute `double$? `altitudeAccuracy$m; readonly attribute `double$? `heading$m; readonly attribute `double$? `speed$m; [`Default$] `object$ `~toJSON0$m(); };
- `latitude@m ◎ 9.1. latitude, longitude, and accuracy attributes
- `WGS84$r 座標系において度数による実数として指定される緯度を表す。 ◎ Candidate Correction: To improve clarity and precision, the description of latitude and longitude attributes has been updated to specify that these are real numbers in degrees according to the [WGS84] geodetic system, instead of just stating "decimal degrees." ◎ Candidate Addition: To improve clarity and precision, a description of the accuracy attribute has been added, defining it as meters of radius. ◎ - The latitude and longitude attributes are geographic coordinates specified in decimal degrees. + The latitude and longitude attributes denote the position, specified as a real number of degrees, in the [WGS84] coordinate system.\
- `longitude@m ◎ ↑
- `latitude$m と同様に,経度を表す。 ◎ ↑
- `accuracy@m ◎ ↑
- 位置の正確度を~meter数による半径で表す。 ◎ + The accuracy attribute denotes the position accuracy radius in meters.
- `altitude@m ◎ 9.2. altitude and altitudeAccuracy attributes
- 位置の標高を[ `WGS84$r 楕円体~上の~meter数 ]で表す。 ◎ The altitude attribute denotes the height of the position, specified in meters above the [WGS84] ellipsoid.
- `altitudeAccuracy@m ◎ ↑
- 高度の正確度を~meter数で表す (例: 10 ~meter)。 ◎ The altitudeAccuracy attribute represents the altitude accuracy in meters (e.g., 10 meters).
- `heading@m ◎ 9.3. heading attribute
- ~hostしている~deviceが進んでいる方向を[ 真北から時計回りに, 0° 以上 360° 未満の度数 ]で表す。 ◎ The heading attribute denotes the direction of travel of the hosting device and is specified in degrees, where 0° ≤ heading < 360°, counting clockwise relative to the true north.
- `speed@m ◎ 9.4. speed attribute
- ~hostしている~deviceの現在の速度を成す水平~成分を~meter数(毎秒)で表す。 ◎ The speed attribute denotes the magnitude of the horizontal component of the hosting device's current velocity in meters per second.
- `~toJSON0()@m ◎ 9.5 toJSON() method
- `GeolocationCoordinates$I ~objの~JSON表現を返す。 ◎ Candidate Addition: Extend the toJSON() method functionality to the GeolocationCoordinates object, allowing it to be serialized into a JSON format which enhances data handling and integration capabilities in web applications. + The toJSON() method returns a JSON representation of the GeolocationCoordinates object.
【 ここに記されていた内容 — `GeolocationPosition$I ~objを構築する~algo — は、 `位置を獲得する~algoの中@#_new-geolocationposition$へ移動した。 】
◎ 9.6. Constructing a GeolocationPosition ◎ Candidate Correction: Constructor now takes a map of position data, a timestamp, and a boolean indicating high accuracy as arguments. We iterate over the map to set the attributes of the GeolocationCoordinates. ◎ + A new GeolocationPosition is constructed with map positionData, EpochTimeStamp timestamp and boolean isHighAccuracy by performing the following steps: • + Let coords be a newly created GeolocationCoordinates instance. • + For each key → value in positionData: •• + Set coords's attribute named key to value. • + Return a newly created GeolocationPosition instance with its coords attribute initialized to coords and timestamp attribute initialized to timestamp, and its [[isHighAccuracy]] internal slot set to isHighAccuracy. ◎ - A new GeolocationPosition is constructed with EpochTimeStamp timestamp and boolean isHighAccuracy by performing the following steps: • - Let coords be a newly created GeolocationCoordinates instance: •• - Initialize coord's latitude attribute to a geographic coordinate in decimal degrees. •• - Initialize coord's longitude attribute to a geographic coordinate in decimal degrees. •• - Initialize coord's accuracy attribute to a non-negative real number. The value SHOULD correspond to a 95% confidence level with respect to the longitude and latitude values. •• - Initialize coord's altitude attribute in meters above the [WGS84] ellipsoid, or null if the implementation cannot provide altitude information. •• - Initialize coord's altitudeAccuracy attribute as non-negative real number, or to null if the implementation cannot provide altitude information. If the altitude accuracy information is provided, it SHOULD correspond to a 95% confidence level. •• - Initialize coord's speed attribute to a non-negative real number, or as null if the implementation cannot provide speed information. •• - Initialize coord's heading attribute in degrees, or null if the implementation cannot provide heading information. If the hosting device is stationary (i.e., the value of the speed attribute is 0), then initialize the heading to NaN. • - Return a newly created GeolocationPosition instance with its coords attribute initialized to coords and timestamp attribute initialized to timestamp, and its [[isHighAccuracy]] internal slot set to isHighAccuracy.10. `GeolocationPositionError^I ~interface
[`Exposed$=Window] interface `GeolocationPositionError@I { const `unsigned short$ `PERMISSION_DENIED$m = 1; const `unsigned short$ `POSITION_UNAVAILABLE$m = 2; const `unsigned short$ `TIMEOUT$m = 3; readonly attribute `unsigned short$ `code$m; readonly attribute `DOMString$ `message$m; };
以下に挙げる定数は、 `code$m 属性に利用される: ◎ 10.1. Constants
- `PERMISSION_DENIED@m (数-値 1 ) ⇒ 次に挙げるいずれかにより,`位置を要請する$のに失敗した ⇒# 利用者は,この~APIを利用する`許可$を否認した/ 当の要請は,非`~secureな文脈$enVから為された ◎ PERMISSION_DENIED (numeric value 1) • Candidate Correction: Updated the description of the PERMISSION_DENIED constant to clarify the reasons for permission denial, including non-secure context and user denials. • Request a position failed because the user denied permission to use the API + or the request was made from an non-secure context .
- `POSITION_UNAVAILABLE@m (数-値 2 ) ⇒ 【他の定数が表すもの以外の理由で,】 `位置を獲得する$のに失敗した。 ◎ POSITION_UNAVAILABLE (numeric value 2) • Acquire a position failed.
- `TIMEOUT@m (数-値 3 ) ⇒ ~UAが成功裡に`位置を獲得する$前に, `timeout$m ~memberにより指定された長さの時間が経過した。 ◎ TIMEOUT (numeric value 3) • The length of time specified by the timeout member has elapsed before the user agent could successfully acquire a position.
`code@m 属性は、 `~error~callbackを~queueする$ときに初期化された値を返す — 結果は、 上に挙げたいずれかの定数になる。 ◎ 10.2. code attribute ◎ The code attribute returns the value it was initialized to (see 10.1 Constants for possible values).
`message@m 属性は、 開発者~向けの[ `code$m 属性についての~textな記述 ]を返す。 ◎ 10.3. message attribute ◎ The message attribute is a developer-friendly textual description of the code attribute.
注記: この属性の目的は, 開発者の~debug法を支援することなので、 【開発者は,】利用者に直に示さないこと。 旧来の理由から、 この属性が返す~textは英語でしか給されない — 開発者は、 利用者の言語に地域化したければ, `code$m 属性を利用することを勧める。 ◎ Note: Don't show .message to users! ◎ The purpose of GeolocationPositionError's message attribute is to assist developers with debugging. For legacy reasons, this attribute does not supply language or base direction metadata and is only localized into English. Developers are advised to use GeolocationPositionError's code attribute to create a localized experience.
11. 許可~施策
この仕様は、 `施策により制御される特能$として, 文字列 `geolocation$l により識別されるものを定義する。 その`既定の許容list$は、 `'self'$l とする。 ◎ This specification defines a policy-controlled feature identified by the token string "geolocation". Its default allowlist is 'self'.
謝辞
◎非規範的この仕様は、 業界における,より早期な作業 — 次に挙げるものを含む — の上に築かれた ⇒# `Aza Raskin^en 氏による事実調査, `Google Gears Geolocation API^en, `LocationAware.org^en ◎ This specification builds upon earlier work in the industry, including research by Aza Raskin, Google Gears Geolocation API, and LocationAware.org.
次に挙げる方々にも感謝する: ◎ Thanks also to\
変更~log
◎非規範的- `2021年 5月 27日 最初の公な作業草案@~TR/2021/WD-geolocation-20210527/$ からの規範的な変更点は: ◎ Since First Public Working Draft in 2021, Geolocation has received the following normative changes:
- ~~静止しているとき【の進行方向に】は、 NaN に代えて ~NULL を利用するようにした。 ( `9d5829e$commit, `173$pull ) ◎ Correction: Use null instead of NaN when stationary (#173)
- `位置を獲得する$~algoを更新した — ~data型を定義して,~cacheされた位置を取扱うよう。 ( `22ed7a4$commit, `153$pull ) ◎ Correction: Update acquisition algorithm to define data types and han…
- `accuracy$m 用の単位を定義した。 ( `a30d713$commit, `162$pull ) ◎ Addition: Define units for accuracy (#162)
- 非~secureな文脈~用の検査。 ( `c2fdd74$commit, `157$pull ) ◎ Correction: check for non-secure contexts (#157)
- `GeolocationCoordinates$I, `GeolocationPosition$I にて `toJSON()^m を公開した。 ( `09b48e6$commit, `147$pull ) ◎ Addition: expose .toJSON() on GeolocationCoordinates + GeolocationPos…
- [ 緯度, 経度 ]用の[ 単位, 測地~systemへの参照 ]を明確化した。 ( `74b1dd0$commit, `138$pull ) ◎ Correction: Clarify units and reference geodetic system for latitude …
- ~WGとして `Web Applications WG@https://www.w3.org/groups/wg/webapps$ を追加した ( `f8b930f$commit, `144$pull ) ◎ Added webapps as group (#144)
- `既定の許容list$への参照を修正した。 ( `7082b4e$commit, `133$pull ) ◎ Fix references to "default allowlist" (#133)
- [ `~taskを~queueする$, `並列的$ ]の用法を修正した。 ( `514f15b$commit, `118$pull ) ◎ fix "Queue a task" / "in parallel" usage (#118)
- 許可の`存続期間$を示唆した。 ( `a1531cb$commit, `108$pull ) ◎ Suggest permission lifetime (#108)
- ~OS~levelの許可~変更を取扱うようにした。 ( `0c378d9$commit, `109$pull ) ◎ Handle OS-level permission change (#109)
- `DOMTimeStamp^I を `EpochTimeStamp$I に切替えた。 ( `2a116d7$commit, `104$pull ) ◎ Switch DOMTimeStamp to EpochTimeStamp (#104)
- `watchPosition()^m は、 ~errorしたときは 0 を返すようにした。 ( `2c0c516$commit, `100$pull ) ◎ Return 0 when watchPosition() errors (#100)
- 文書が`全部的に作動中$でない間は、 `~error~callbackを~queueする$ようにした。 ( `de05002$commit, `97$pull ) ◎ Callback with error if doc is not fully active (#97)
- `全部的に作動中$でない文書を上品に取扱うようにした。 ( `f4605e5$commit, `90$pull ) ◎ Gracefully handle documents that are not fully active (#90)
- 地理所在~用の`~task~queue$【`地理所在~task~source$】を追加した。 ( `41d7945$commit, `87$pull ) ◎ Add "geolocation task queue" (#87)
- `2016年 11月 8日 第 2 版 勧告@~TR/2016/REC-geolocation-API-20161108/$ からの~~有意な変更点は: ◎ Since publication of the Second Edition in 2016, this specification received the following substantive changes:
- `位置を要請する$のは、 文書が[ 可視なとき/可視になるとき ]に限り続行する。 ◎ Request a position only proceeds when a document is visible, or the document becomes visible.
- `位置を獲得する$間に~cache法がどう働くかを明確化した ⇒ 最後の位置に限り~cacheされ,いつでも抹消し得る。 ◎ Clarified how caching works as part of acquiring a position: only last position is cached, and can be evicted at any time.
- [ 許可の是認, ~UI要件 ]を取扱うため、 今や `Permissions$r に依拠する。 ◎ Now relies on the Permissions specification to handle permission grants, and user interface requirements.
- %errorCallback 引数は、 今や ~NULL 可能になった。 ◎ The errorCallback is now nullable.
- この~APIは、 許可~施策 `Permissions-Policy$r により制御され得る — それは、 この~APIが[ どこで, どう ]~web~pageに公開されるかを制約する。 ◎ The API can be controlled by Permissions Policy, which restricts how/where the API is exposed to web pages.
- 各種~callbackは、 もはや, `EventHandler^I ~obj (すなわち, `.handleEvent()^m ~methodを伴う~obj) 【すなわち,~IDL`~callback~interface$】 として扱われず, ~IDL`~callback関数$として排他的に扱われる。 ◎ The 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.
- この~APIは、 今や,`~secureな文脈$enV内に限り公開される (すなわち、~HTTPSに限り可用になる)。 ◎ The API is now only exposed in Secure Contexts (i.e., only available in HTTPS).
- 各種~interfaceは、 もはや旧来の [NoInterfaceObject] 【現在の名称は [`LegacyNoInterfaceObject$] 】 拡張d属性 `WebIDL$r を利用しない。 なので、 この仕様による `Geolocation^I その他の~interfaceは,今や大域~scope内にある。 また、 これらの~interfaceは, `NavigatorGeolocation*^I から `Geolocation*^I に改称された。 ◎ The interfaces no longer use [WebIDL]'s legacy [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*.
変更点を成す完全な~listは、 `~commit履歴@https://github.com/w3c/geolocation/commits/gh-pages$を見よ。 ◎ See the commit history for a complete list of changes.