* 仕様書

[REFS[
- [3] [CITE@en[Geolocation API Specification]], [TIME[2019-11-24 18:38:51 +09:00]] <https://w3c.github.io/geolocation-api/#position_interface>
]REFS]

* [CODE[GeolocationPosition]]

[6] 
[DFN[[CODE[GeolocationPosition]]]]
[[インターフェイス]]は、
[[文書環境]]に[[晒され]]、
[[保安文脈]]で利用可能です。
[SRC[>>3]]

[7] 
[CODE[GeolocationPosition]]
[[オブジェクト]]は
1対の[[位置情報]]を表します。

[FIG(short list)[ [9] [CODE[GeolocationPosition]] [[インターフェイスメンバー]]
- [CODE[coords][GeolocationCoordinates]]
- [CODE[timestamp][GeolocationPosition]]
]FIG]

[8] [CODE[getCurrentPosition]] や [CODE[watchPosition]]
で作成されます。作成後の状態の変更はできません。

[FIG(list members)[ [11] [CODE[GeolocationPosition]] [[オブジェクト]]の状態
: [F[[CODE[coords][GeolocationCoordinates]]]] : [CODE[GeolocationCoordinates]]
: [F[[CODE[timestamp][GeolocationPosition]]]] : 
[CODE[GeolocationPosition]]
を取得した[[時刻]]を表す
[CODE[DOMTimeStamp]] [SRC[>>3]]。
]FIG]

[10] 
[CODE[GeolocationPosition]]
[[インターフェイス]]の
[DFN[[CODE[coords][GeolocationCoordinates]]]]
[[IDL属性]] [SRC[>>3]] の[[取得器]]は、
次のようにしなければ[MUST[なりません]]。

[FIG(steps)[
= [12] [[文脈オブジェクト]]の
[F[[CODE[coords][GeolocationCoords]]]]
を返します。
]FIG]

[13] 
[CODE[GeolocationPosition]]
[[インターフェイス]]の
[DFN[[CODE[timestamp][GeolocationPosition]]]]
[[IDL属性]] [SRC[>>3]] の[[取得器]]は、
次のようにしなければ[MUST[なりません]]。

[FIG(steps)[
= [14] [[文脈オブジェクト]]の
[F[[CODE[timestamp][GeolocationPosition]]]]
を返します。
]FIG]

[HISTORY[
[5] 
将来の版では[[住所]]など他の情報が追加され得ると想定されていました。 [SRC[>>3]]
]HISTORY]


* [CODE[GeolocationCoordinates]]

[15] 
[DFN[[CODE[GeolocationCoordinates]]]]
[[インターフェイス]]は、
[[文書環境]]に[[晒され]]、
[[保安文脈]]で利用可能です。
[SRC[>>3]]

[FIG(short list)[ [16] [CODE[GeolocationCoordinates]] [[インターフェイスメンバー]]
- [CODE[latitude][GeolocationCoordinates]]
- [CODE[longitude][GeolocationCoordinates]]
- [CODE[accuracy][GeolocationCoordinates]]
- [CODE[altitude][GeolocationCoordinates]]
- [CODE[altitudeAccuracy][GeolocationCoordinates]]
- [CODE[heading][GeolocationCoordinates]]
- [CODE[speed][GeolocationCoordinates]]
]FIG]

[17] [CODE[getCurrentPosition]] や [CODE[watchPosition]]
で作成されます。作成後の状態の変更はできません。

[FIG(list members)[ [18] [CODE[GeolocationCoordinates]] [[オブジェクト]]の状態
: [CODE[latitude][GeolocationCoordinates]] :
: [CODE[longitude][GeolocationCoordinates]] :
: [CODE[accuracy][GeolocationCoordinates]] :
: [CODE[altitude][GeolocationCoordinates]] :
: [CODE[altitudeAccuracy][GeolocationCoordinates]] :
: [CODE[heading][GeolocationCoordinates]] :
: [CODE[speed][GeolocationCoordinates]] :

]FIG]

[33] 
[CODE[latitude][GeolocationCoordinates]] は、
[[WGS84]] [[緯度]]を[[十進度]]で [CODE[double]] で表したものです。
[CODE[longitude][GeolocationCoordinates]] は、
[[WGS84]] [[経度]]を[[十進度]]で [CODE[double]] で表したものです。
[SRC[>>3]]

[35] 
[CODE[accuracy][GeolocationCoordinates]] は、
[[緯度]]・[[経度]]の正確度を表すものです。
[[メートル]]単位の[[非負実数]]で [CODE[double]] で表したものです。
[[95%信頼区間]]に相当する値とする[SHOULD[べきです]]。
[SRC[>>3]]



[19] [CODE[GeolocationCoordinates]] [[インターフェイス]]の
[DFN[[CODE[latitude][GeolocationCoordinates]]]] [[IDL属性]] [SRC[>>3]] の[[取得器]]は、
次のようにしなければ[MUST[なりません]]。

[FIG(steps)[
= [20] [[文脈オブジェクト]]の [F[[CODE[latitude][GeolocationCoordinates]]]] を返します。
]FIG]

[21] [CODE[GeolocationCoordinates]] [[インターフェイス]]の
[DFN[[CODE[longitude][GeolocationCoordinates]]]] [[IDL属性]] [SRC[>>3]] の[[取得器]]は、
次のようにしなければ[MUST[なりません]]。

[FIG(steps)[
= [22] [[文脈オブジェクト]]の [F[[CODE[longitude][GeolocationCoordinates]]]] を返します。
]FIG]

[23] [CODE[GeolocationCoordinates]] [[インターフェイス]]の
[DFN[[CODE[accuracy][GeolocationCoordinates]]]] [[IDL属性]] [SRC[>>3]] の[[取得器]]は、
次のようにしなければ[MUST[なりません]]。

[FIG(steps)[
= [24] [[文脈オブジェクト]]の [F[[CODE[accuracy][GeolocationCoordinates]]]] を返します。
]FIG]

[34] 
[CODE[altitude][GeolocationCoordinates]] は、
[[WGS84楕円体]]上の[[高度]]を[[メートル]]単位の [CODE[double]]
で表したものです。
[SRC[>>3]]

[36] 
[CODE[altitudeAccuracy][GeolocationCoordinates]] は、
[[高度]]の正確度を表すものです。
[[メートル]]単位の[[非負実数]]で [CODE[double]] で表したものです。
[[95%信頼区間]]に相当する値とする[SHOULD[べきです]]。
[SRC[>>3]]

[37] 
実装が[[高度]]情報を取得できない場合、
[CODE[altitude][GeolocationCoordinates]] と
[CODE[altitudeAccuracy][GeolocationCoordinates]] は
[CODE[null]] とします。
[SRC[>>3]]


[25] [CODE[GeolocationCoordinates]] [[インターフェイス]]の
[DFN[[CODE[altitude][GeolocationCoordinates]]]] [[IDL属性]] [SRC[>>3]] の[[取得器]]は、
次のようにしなければ[MUST[なりません]]。

[FIG(steps)[
= [26] [[文脈オブジェクト]]の [F[[CODE[altitude][GeolocationCoordinates]]]] を返します。
]FIG]

[27] [CODE[GeolocationCoordinates]] [[インターフェイス]]の
[DFN[[CODE[altitudeAccuracy][GeolocationCoordinates]]]] [[IDL属性]] [SRC[>>3]] の[[取得器]]は、
次のようにしなければ[MUST[なりません]]。

[FIG(steps)[
= [28] [[文脈オブジェクト]]の [F[[CODE[altitudeAccuracy][GeolocationCoordinates]]]] を返します。
]FIG]

-*-*-

[38] 
[CODE[heading][GeolocationCoordinates]] は、
[[装置]]の進行方向を、[[真北]]から[[時計回り]]に [0, 360) の[[度]]単位の
[CODE[double]] 
で表したものです。
この情報を取得できない時は [CODE[null]] とします。
[[装置]]が静止している ([CODE[speed][GeolocationCoordinates]] = [N[0]])
ときは 
[CODE[NaN]]
とします。
[SRC[>>3]]

[39] [[仕様書]]は [CODE[double]] (≠ [CODE[unrestricted double]])
としながら
[CODE[NaN]]
を使っており、矛盾しています。どちらが正しいのか不明。

;; [42] [[装置の方向]]を取得する [[API]] は他にあります。

[40] 
[CODE[speed][GeolocationCoordinates]] は、
[[装置]]の現在の[[速度]]の[[水平]]成分の大きさを[[メートル毎秒]]単位の[[非負実数]]で
[CODE[dobule]]
で表したものです。
この情報を取得できない時は [CODE[null]] とします。
[SRC[>>3]]


[29] [CODE[GeolocationCoordinates]] [[インターフェイス]]の
[DFN[[CODE[heading][GeolocationCoordinates]]]] [[IDL属性]] [SRC[>>3]] の[[取得器]]は、
次のようにしなければ[MUST[なりません]]。

[FIG(steps)[
= [30] [[文脈オブジェクト]]の [F[[CODE[heading][GeolocationCoordinates]]]] を返します。
]FIG]

[31] [CODE[GeolocationCoordinates]] [[インターフェイス]]の
[DFN[[CODE[speed][GeolocationCoordinates]]]] [[IDL属性]] [SRC[>>3]] の[[取得器]]は、
次のようにしなければ[MUST[なりません]]。

[FIG(steps)[
= [32] [[文脈オブジェクト]]の [F[[CODE[speed][GeolocationCoordinates]]]] を返します。
]FIG]

* 実装

[41] [[Windows]] の [[Chrome]] では、
[[緯度]]と[[経度]]とその正確度だけ得られ、他は
[CODE[null]] でした。
といっても当該[[装置]]で利用できる[[センサー]]の種類によってどの値が得られるのかは変わってくると思われます。
[TIME[2020-04-17T07:34:48.100Z]]

* 歴史

[4] 当初の[[インターフェイス]]名は
[DFN[[CODE[Position]]]]、
[DFN[[CODE[Coordinates]]]]
でした。


[1] [CITE@en[Geolocation API Specification]]
( ([TIME[2013-10-22 23:10:42 +09:00]] 版))
<http://www.w3.org/TR/geolocation-API/#position_interface>

[2] [CITE@en[Geolocation API Specification]]
( ([TIME[2013-10-22 23:10:42 +09:00]] 版))
<http://www.w3.org/TR/geolocation-API/#coordinates_interface>
